2017-05-18 1 views
2

Je dois générer un certificat auto-signé lorsque le docker démarre. essentiellement notre docker est commencé en utilisant ciourse ci. Il doit donc être dans le dockerfile et ne peut utiliser aucune option en utilisant docker run.générer un certificat auto-signé dans docker

Laissez-moi des entrées pour ce

Répondre

2

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é.