Quel est le problème avec commande simple RUN
? Cela fonctionne pour moi et le certificat auto-signé est créé avec succès.
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
Si vous souhaitez que ce soit dans Dockerfile, le certificat est créé une fois lors de la construction; alors il utilise juste le certificat dans l'image.
Si vous avez besoin d'un nouveau certificat chaque fois qu'un conteneur démarre, mais cela n'est possible qu'avec l'utilisation d'un script shell externe, qui génère un certificat auto-signé. Les étapes mentionnées ci-dessus:
#!/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
Et puis le mettre dans votre Dockerfile et mettre en place l'exécution par défaut:
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" ]
Dans ce cas, chaque fois que vous démarrez un récipient avec docker run ....
, un nouveau certificat unique sera généré.