使用acme.sh部署CA证书

使用acme.sh申请CA证书

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

安装acme.sh

  1. 下载脚本并安装

    1
    curl  https://get.acme.sh | sh
  2. 进入acme.sh的目录

    1
    ~/.acme.sh/
  3. 将本目录里的为acme.ch映射一个全局别名acme.sh,方便在其他路径下也能执行该脚本

    1
    alias acme.sh=~/.acme.sh/acme.sh

生成证书

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

    把证书的路径配置到nginx里(这里是我主域名,即www域名的配置):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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:
1
nginx -s reopen

使acme.sh自动升级

作者原话:

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

1
acme.sh  --upgrade  --auto-upgrade

结尾

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

AlexC wechat
博客与公众号同步发文,欢迎关注
感谢你的支持