letsencrypt 免费的ssl证书现在已经比较流行了,今天来使用docker环境一行命令签发/续期证书。
他自己的有多种方式验证服务器的合法性,也就是证明这台服务器是你的,你拥有他的操作权限。今天使用webroot的方式来验证,这个方式有一个好处就是不影响现有的服务器运行。
他的机制其实就是命令录入一个webroot,自动验证程序会在这个目录写入一个临时的文件,然后这个程序会从互联网外网通过你键入的域名来访问这个文件,比如[http://gbk.pw/.well-known/acme-challenge/BY91IegFTEq8MtM8nAGEwOvY2TSos_tM7E2fAOeGgF0:]。如果通过域名能访问到,也就代表着你有这台服务器有写入权限。当然这只是他的原理,使用起来可以不必关心这些。
验证程序镜像地址:quay.io/letsencrypt/letsencrypt
今天使用docker环境来签发这个证书。先交待一下环境,宿主机是跑着docker,docker的http目录挂载在宿主机上。使用自动验证程序镜像先要把宿主机上的http目录也挂载到docker验证程序镜像上。
-v /etc/letsencrypt:/etc/letsencrypt -v HTTP_ROOT_PATH:/www/
我想把这些验证也保存在宿主机上,所以还要添加下面的挂载。
-v /etc/letsencrypt:/etc/letsencrypt
然后添加其他参数运行直接运行镜像里面的验证程序 ,完整命令如下。
docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v HTTP_ROOT_PATH:/www/ quay.io/letsencrypt/letsencrypt auth --webroot -w /www/ -m tongseo@gmail.com --agree-tos -d gbk.pw
如果的虚机主机签发多个域名的话,最好也键入相对应的路径,这样续期的时候会方便一些。
docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v /data0/web/:/www/ quay.io/letsencrypt/letsencrypt auth --webroot -w /www/vhost1/public/ -m tongseo@gmail.com --agree-tos -d vhost1.gbk.pw docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v /data0/web/:/www/ quay.io/letsencrypt/letsencrypt auth --webroot -w /www/vhost2/public/ -m tongseo@gmail.com --agree-tos -d vhost2.gbk.pw
顺利的话就会出现下面的界面
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/meiyeadmin.proxy.6rooms.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/meiyeadmin.proxy.6rooms.net/privkey.pem Your cert will expire on 2018-05-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
续期的命令如下。测试运行可以添加–dry-run参数。
docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt -v /data0/web/vhost/:/www/ quay.io/letsencrypt/letsencrypt renew --agree-tos --dry-run
当有多个虚拟主机的情况下,要添把这个目录挂载成公用的,才可以继续操作。-v /var/lib/letsencrypt:/var/lib/letsencrypt