使用docker来签发Let’s Encrypt证书

环境

这里使用docker的quay.io/letsencrypt/letsencrypt镜像进行证书的签发,所以前提是要先安装docker的环境,这里就不介绍了安装了,自行百度.

生成证书

docker run --rm -p 80:80 -p 443:443 \
    -v /file/letsencrypt:/etc/letsencrypt  \
    certbot/certbot auth --standalone -m your@mail.com --agree-tos -d domain.com -d git.domain.com -d mail.domain.com

使用参数 -d 添加多个域名,前提是这些域名都能正确的访问到当前的服务器

生成成功后,会在/file/letsencrypt下生成多余域名的文件夹,这里是domain.com,里面包含签发的证书文件.

nginx的证书配置

server {
        listen 443;
        server_name git.domian.com;

        ssl on;
        ssl_certificate /file/letsencrypt/live/domian.com/fullchain.pem;
        ssl_certificate_key /file/letsencrypt/live/domian.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        location / {
             proxy_pass http://192.168.0.1:10080/;
             include /file/nginx/proxy.conf;
        }

}

更新证书

## 停止nginx,避免端口占用
sudo service nginx stop
## 更新证书请求
docker run --rm -p 80:80 -p 443:443 \
   -v /file/letsencrypt:/etc/letsencrypt  \
    certbot/certbot renew \
    --standalone
## 重启nginx    
sudo service nginx start    

自动更新

创建自动更新脚本:letsencrypt-auto-renew.sh

#!/bin/bash 
service nginx stop
docker run --rm -p 80:80 -p 443:443 -v /file/letsencrypt:/etc/letsencrypt certbot/certbot renew  --standalone
service nginx start

赋予执行权限

chome +x letsencrypt-auto-renew.sh

加入crontab自动执行

crontab -e
0 0 1 * * letsencrypt-auto-renew.sh
使用docker来签发Let’s Encrypt证书
Share this