使用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 时,让我们正确地做,即使是自签名证书也是如此
首先,我是 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 时,让我们正确地做,即使是自签名证书也是如此