在docker中生成自签名证书

时间:2017-05-18 12:06:34

标签: docker dockerfile

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

让我知道这个

的任何输入

2 个答案:

答案 0 :(得分:12)

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

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后,证书在图像构建期间仅创建一次;然后你就可以在图像中找到证书。

如果每次容器启动时都需要新的自签名证书,则可以使用外部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

然后将该shell脚本放入Dockerfile并设置默认执行:

FROM debian:wheezy

RUN apt-get update && \
    apt-get install -y openssl

COPY generate-certificate.sh /tmp/generate-certificate.sh

CMD [ "/tmp/generate-certificate.sh" ]

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

答案 1 :(得分:3)

我在nginx:alpine中使用了类似的方法

FROM nginx:1.19.1-alpine

RUN apk update && \
    apk add --no-cache openssl && \
    openssl req -x509 -nodes -days 365 \
    -subj  "/C=CA/ST=QC/O=Company Inc/CN=example.com" \
     -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key \
     -out /etc/ssl/certs/nginx-selfsigned.crt;