使用acme.sh申请CA证书
前情提要:我的服务器系统装的是Debian 9,并装有nginx。
安装acme.sh
-
下载脚本并安装
curl https://get.acme.sh | sh -
进入acme.sh的目录
~/.acme.sh/ -
将本目录里的为acme.ch映射一个全局别名
acme.sh,方便在其他路径下也能执行该脚本alias acme.sh=~/.acme.sh/acme.sh
生成证书
- 关闭nginx或其他占用
80端口的应用或服务,nginx可以这样操作:
nginx -s stop
- 生成证书(官方的做法其实并不是这个,这个我是从一篇安装harbor的教程里看到的,但因为我觉得这个写起来更简单些,我这里用这种方法)
sh acme.sh --issue -d www.xxx.com --standalone #这里的-d后面接的就是你想要为其申请CA证书的域名
-
证书生成了三种:普通证书、中级证书和完整链条证书,我在看官方教程之前放的是普通证书,在写教程的时候才发现准确来说应该放完整链条证书。
把证书的路径配置到nginx里(这里是我主域名,即www域名的配置):
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
root /home/git/hexo;
index index.html;
server_name www.alexc.cn;
ssl on;
ssl_certificate /root/.acme.sh/alexc.cn/fullchain.cer; #这里放的是证书
ssl_certificate_key /root/.acme.sh/alexc.cn/alexc.cn.key; #这里是证书秘钥
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
ssl_prefer_server_ciphers on;
return 301 https://blog.alexc.cn;
}
因为偷懒所以我就没按照官方的建议把证书放到其他位置
- 再启动nginx:
nginx -s reopen
使acme.sh自动升级
作者原话:
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
acme.sh --upgrade --auto-upgrade
结尾
大致就是这个样子,感觉应该也没有什么要补充的了。