项目作者: stakater-docker

项目描述 :
Dockerfile for ssl-certs-generator
高级语言: Shell
项目地址: git://github.com/stakater-docker/ssl-certs-generator.git
创建时间: 2018-09-17T10:01:33Z
项目社区:https://github.com/stakater-docker/ssl-certs-generator

开源协议:

下载


Self Signed SSL Certificate Generator

About

Origin: https://github.com/paulczar/omgwtfssl

Sick of googling every time you need a self signed certificate?

This is a small docker image based off alpine linux which makes creating self signed SSL certs easier:

  1. $ docker run -v /tmp/certs:/certs stakater/ssl-certs-generator:1.0
  2. ----------------------------
  3. | SSL Cert Generator |
  4. ----------------------------
  5. --> Certificate Authority
  6. ====> Generating new CA key ca-key.pem
  7. Generating RSA private key, 2048 bit long modulus
  8. ..................................+++
  9. ..................................+++
  10. e is 65537 (0x10001)
  11. ====> Generating new CA Certificate ca.pem
  12. ====> Generating new config file openssl.cnf
  13. ====> Generating new SSL KEY key.pem
  14. Generating RSA private key, 2048 bit long modulus
  15. ....................................................................+++
  16. ........................+++
  17. e is 65537 (0x10001)
  18. ====> Generating new SSL CSR key.csr
  19. ====> Generating new SSL CERT cert.pem
  20. Signature ok
  21. subject=/CN=test
  22. Getting CA Private Key
  23. $ ls /tmp/certs
  24. ca-key.pem ca.pem ca.srl cert.pem key.csr key.pem openssl.cnf
  25. $ openssl verify -CAfile /tmp/certs/ca.pem /tmp/certs/cert.pem
  26. /tmp/certs/cert.pem: OK

Advanced Usage

Customize the certs using the following Environment Variables:

  • CA_KEY CA Key file, default ca-key.pem [1]
  • CA_CERT CA Certificate file, default ca.pem [1]
  • CA_SUBJECT CA Subject, default test-ca
  • CA_EXPIRE CA Expiry, default 60 days
  • SSL_CONFIG SSL Config, default openssl.cnf [1]
  • SSL_KEY SSL Key file, default key.pem
  • SSL_CSR SSL Cert Request file, default key.csr
  • SSL_CERT SSL Cert file, default cert.pem
  • SSL_SIZE SSL Cert size, default 2048 bits
  • SSL_EXPIRE SSL Cert expiry, default 60 days
  • SSL_SUBJECT SSL Subject default example.com
  • SSL_DNS comma seperate list of alternative hostnames, no default [2]
  • SSL_IP comma seperate list of alternative IPs, no default [2]

[1] If file already exists will re-use.
[2] If SSL_DNS or SSL_IP is set will add SSL_SUBJECT to alternative hostname list

Examples

Create Certificates for NGINX

Creating web certs for testing SSL just got a hell of a lot easier…

Create Certificate:

  1. $ docker run -v /tmp/certs:/certs \
  2. -e SSL_SUBJECT=test.example.com stakater/ssl-certs-generator:1.0

Enable SSL in /etc/nginx/sites-enabled/default:

  1. server {
  2. listen 443;
  3. server_name test.example.com;
  4. root html;
  5. index index.html index.htm;
  6. ssl on;
  7. ssl_certificate /tmp/certs/cert.pem;
  8. ssl_certificate_key /tmp/certs/key.pem;
  9. ssl_session_timeout 5m;
  10. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  11. ssl_ciphers HIGH:!aNULL:!MD5;
  12. location / {
  13. try_files $uri $uri/ =404;
  14. }
  15. }

Restart NGINX and test:

  1. $ service nginx restart
  2. $ echo '127.0.2.1 test.example.com' >> /etc/hosts
  3. $ curl --cacert /tmp/certs/ca.pem https://test.example.com
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. ...

Create keys for docker registry

Slightly more interesting example of using stakater/ssl-certs-generator as a volume container to build and host SSL certs for the Docker Registry image

Create the volume container for the registry from stakater/ssl-certs-generator:

  1. $ docker run \
  2. --name certs \
  3. -e SSL_SUBJECT=test.example.com \
  4. stakater/ssl-certs-generator
  5. ----------------------------
  6. | SSL Cert Generator |
  7. ----------------------------
  8. --> Certificate Authority
  9. ====> Generating new CA key ca-key.pem
  10. Generating RSA private key, 2048 bit long modulus
  11. ..........+++
  12. .......................................................+++
  13. e is 65537 (0x10001)
  14. ====> Generating new CA Certificate ca.pem
  15. ====> Generating new config file openssl.cnf
  16. ====> Generating new SSL KEY key.pem
  17. Generating RSA private key, 2048 bit long modulus
  18. ........................................................................................................................................................+++
  19. ...+++
  20. e is 65537 (0x10001)
  21. ====> Generating new SSL CSR key.csr
  22. ====> Generating new SSL CERT cert.pem
  23. Signature ok
  24. subject=/CN=test.example.com
  25. Getting CA Private Key

Run the registry using --volumes-from to use the volume container created above:

  1. $ docker run -d \
  2. --name registry \
  3. --volumes-from certs \
  4. -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/cert.pem \
  5. -e REGISTRY_HTTP_TLS_KEY=/certs/key.pem \
  6. -p 5000:5000 \
  7. registry:2

Make sure it works:

  1. $ echo "127.0.2.1 test.example.com" >> /etc/hosts
  2. $ docker tag paulczar/omgwtfssl test.example.com:5000/omgwtfbbq
  3. $ docker push test.example.com:5000/omgwtfbbq
  4. The push refers to a repository [test.example.com:5000/omgwtfbbq] (len: 1)
  5. e34964fe7cfa: Pushed
  6. d52b82eb9ff3: Pushed
  7. 6b030e7d76a6: Pushed
  8. 8a648f689ddb: Pushed
  9. latest: digest: sha256:8a97202b0ad9b375ff478d84ed948ae7ddd298196fd3b341fc8391a0fe71345a size: 7617