使用acme.sh申请CA证书

前情提要:我的服务器系统用的是Debian,并装有nginx。

安装acme.sh

  1. 下载脚本并安装
   curl  https://get.acme.sh | sh
  1. 进入acme.sh的目录
   ~/.acme.sh/
  1. 将本目录里的为acme.ch映射一个全局别名acme.sh,方便在其他路径下也能执行该脚本
   alias acme.sh=~/.acme.sh/acme.sh

生成证书

  1. 关闭nginx或其他占用80端口的应用或服务,nginx可以这样操作:
  nginx -s stop
  1. 生成证书(官方的做法其实并不是这个,这个我是从一篇安装harbor的教程里看到的,但因为我觉得这个写起来更简单些,我这里用这种方法)
sh acme.sh  --issue -d www.xxx.com   --standalone #这里的-d后面接的就是你想要为其申请CA证书的域名
  1. 证书生成了三种:普通证书、中级证书和完整链条证书,我在看官方教程之前放的是普通证书,在写教程的时候才发现准确来说应该放完整链条证书。

把证书的路径配置到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;
}

因为偷懒所以我就没按照官方的建议把证书放到其他位置

  1. 再启动nginx:
nginx -s reopen

使acme.sh自动升级

作者原话:

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

acme.sh  --upgrade  --auto-upgrade

结尾

大致就是这个样子,感觉应该也没有什么要补充的了。