首先感谢 Let’s encrypt 证书,部署十分简单、自动化并且免费。 本站基于 github 上的开源项目 acme.sh, 使用 Use Nginx mode申请Let’s encrypt证书。通过脚本加入 crontab 定时计划自动更新。

1.在线安装

curl https://get.acme.sh | sh

Or

wget -O -  https://get.acme.sh | sh 

其他更多安装方法参考 How to install

设置别名
alias acme.sh=~/.acme.sh/acme.sh
创建 crontab 更新证书
0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

创建证书

选择使用 Use Nginx mode 来创建证书。 如下:

acme.sh --issue --nginx -d www.cxiang.net 

这样在目录/root/.acme.sh/www.cxiang.net/ 会生成证书。主要证书和私钥:

www.cxiang.net.cer    
www.cxiang.net.key

配置证书

server{
        listen       443 ssl http2;
        server_name  www.cxiang.net;
        root         /usr/wwwroot/cxiang;
        index index.php index.html ;
        ssl_certificate "/root/.acme.sh/www.cxiang.net/www.cxiang.net.cer";
        ssl_certificate_key "/root/.acme.sh/www.cxiang.net/www.cxiang.net.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        }

可以通过 nginx 里面的 Rewrite 规则实现所有请求都走 https 访问 :

 rewrite ^(.*)$ https://$host$1 permanent;

自动更新

创建 upssl.sh 脚本:

#!/bin/bash
/root/.acme.sh/acme.sh  --renew --force --issue --nginx -d  www.cxiang.net --reloadcmd  "systemctl reload nginx" 

脚本可执行权限:

chmod +x upssl.sh     

crontab任务:

0 3 15 * * root `/usr/local/upssl.ssh > /dev/null`   

凌晨 3 点每半个月自动更新证书,reload nginx

更新说明

使用DNS-API更加方便

  1. https://github.com/Neilpang/acme.sh#8-use-dns-manual-mode
  2. https://github.com/Neilpang/acme.sh/tree/master/dnsapi#11-use-aliyun-domain-api-to-automatically-issue-cert
    acme.sh --renew -d example.com
所有用户赞赏通道:

发表新评论

© ICP: 浙ICP备17033011号-1