在docker中生成一个自签名的证书

docker工启动时,我需要生成一个自签名证书。 基本上我们的docker开始使用concourse ci。 所以它必须在dockerfile中,不能使用任何使用docker run的选项。

让我知道这个任何投入

简单的RUN命令有什么问题? 它适用于我,自签名证书已成功创build。

 FROM debian:wheezy RUN apt-get update && \ apt-get install -y openssl && \ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048 && \ openssl rsa -passin pass:x -in server.pass.key -out server.key && \ rm server.pass.key && \ openssl req -new -key server.key -out server.csr \ -subj "/C=UK/ST=Warwickshire/L=Leamington/O=OrgName/OU=IT Department/CN=example.com" && \ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

如果你需要这个在Dockerfile中,那么这个证书是在构build时创build的; 那么它只是使用图像中的证书。

如果每次容器启动时都需要新的证书,但只有使用外部shell脚本才能生成自签名证书。 使用上面提到的步骤:

 #!/bin/bash openssl genrsa -des3 -passout pass:x -out server.pass.key 2048 openssl rsa -passin pass:x -in server.pass.key -out server.key rm server.pass.key openssl req -new -key server.key -out server.csr \ -subj "/C=UK/ST=Warwickshire/L=Leamington/O=OrgName/OU=IT Department/CN=example.com" openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

然后把它放到你的Dockerfile中并设置默认执行:

 FROM debian:wheezy RUN apt-get update && \ apt-get install -y openssl ADD generate-certificate.sh /tmp/generate-certificate.sh CMD [ "/tmp/generate-certificate.sh" ] 

在这种情况下,每次使用docker run ....启动容器时,都会生成一个新的唯一证书。