使用dockerfile生成自签名证书实际上并没有生成自签名证书

Generating a self-signed cert with dockerfile not actually generating a self-signed cert

首先,我是 docker 的新手。但这似乎很简单。

我正在 this dockerfile 工作。我做了一些非常基本的修改,比如安装 openssl 和生成一些自签名证书,这样我就可以在 apache 中使用 ssl。这是我添加到链接 docker 文件的部分:

RUN mkdir /ssl-certs
RUN openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -subj \
    "/C=../ST=../L=..../O=LAB/CN=....." \
    -keyout /ssl-certs/ssl.key -out /ssl-certs/ssl.crt

RUN mkdir -p /etc/apache2/ssl/
COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key
COPY /ssl-certs/ssl.crt /etc/apache2/ssl/ssl.crt

然而,当我编译它时,我得到以下输出:

 => CACHED [ 8/19] RUN openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -subj     "/C=../ST=../L=....  0.0s
 => CACHED [ 9/19] RUN mkdir -p /etc/apache2/ssl/                                                                  0.0s
 => ERROR [10/19] COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key                                                 0.0s
 => ERROR [11/19] COPY /ssl-certs/ssl.crt /etc/apache2/ssl/ssl.crt                                                 0.0s
------
 > [10/19] COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key:
------
------
 > [11/19] COPY /ssl-certs/ssl.crt /etc/apache2/ssl/ssl.crt:
------

这基本上告诉我 openssl 实际上没有做任何事情,或者 docker 没有等待 openssl 完成,这似乎不太可能。我环顾四周,似乎找不到有类似问题的人。感谢任何指点。

COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key
COPY /ssl.crt /etc/apache2/ssl/ssl.crt

COPY 命令尝试访问主机上的 /ssl-certs,而不是容器内部。你可以试试

RUN cp /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key \
 && cp /ssl.crt /etc/apache2/ssl/ssl.crt

编辑:尽管我认为

是一种不好的做法
  • 将秘密(私钥)构建到容器中,而不是在 运行-时间
  • 装载秘密
  • 创建非确定性构建(生成新的随机私钥)

我猜或者更希望它是为了 dev/education 目的,但是在做 ssl 时,让我们正确地做,即使是自签名证书也是如此