Let's Encrypt 泛域名证书申请过程

  基础研究 , ssl

微洽作为一个在线沟通的WebIM,为了数据传输安全,站点支持SSL是标配。申请SSL证书首选 Let's Encrypt。今年3月14日官方宣布正式对 ACMEv2 和泛域名证书提供支持,为搭建全站的ssl提供的条件。

申请Let’s Encrypt数字证书,首选使用 acme.sh,亲测,申请和部署还是非常简单的。

1.首先安装acme.sh

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

如果acme.sh 命令未找到,执行一下这个 source ~/.bashrc

2.由于我的域名是阿里云购买的,需要验证所有权
export Ali_Key="xxx"
export Ali_Secret="xxxxxxxx"

获取Ali_Key 和 Ali_Secret的方法,其他地方注册的请参考这里

3.申请证书

设置好域名的密钥后,就可以执行申请命令了。

acme.sh --issue --dns dns_ali -d xxx.com -d *.xxx.com

# 如果出现下面的提示,说明申请成功了
[Mon Apr 30 15:35:14 CST 2018] Your cert is in  /root/.acme.sh/xxx.com/xxx.com.cer
[Mon Apr 30 15:35:14 CST 2018] Your cert key is in  /root/.acme.sh/xxx.com/xxx.com.key
[Mon Apr 30 15:35:14 CST 2018] The intermediate CA cert is in  /root/.acme.sh/xxx.com/ca.cer
[Mon Apr 30 15:35:14 CST 2018] And the full chain certs is there:  /root/.acme.sh/xxx.com/fullchain.cer

申请的证书会放到 ~/.acme.sh/ 目录里面,所有的 acme.sh 配置都记录在 ~/.acme.sh/ 目录里面,acme.sh 有自动的配置读取,并按域名划分,下次你再次执行的时候,它知道你之前是用的那个目录,只需要告诉它域名就好了。

4.安装证书
acme.sh --installcert -d xxx.com \
             --keypath       /data/nginx/ssl/xxx.com.key  \
             --fullchainpath /data/nginx/ssl/xxx.com.key.pem \
             --reloadcmd     "/data/nginx/sbin/nginx -s reload"
# /data/nginx/ssl/ 是证书安装目录
# reloadcmd 是nginx 的reload 命令

#如果出现下面的提示,说明安装成功了
[Mon Apr 30 16:19:32 CST 2018] Installing key to:/data/nginx/ssl/xxx.com.key
[Mon Apr 30 16:19:32 CST 2018] Installing full chain to:/data/nginx/ssl/xxx.com.key.pem
[Mon Apr 30 16:19:32 CST 2018] Run reload cmd: /data/nginx/sbin/nginx -s reload
[Mon Apr 30 16:19:32 CST 2018] Reload success
5.修改 Nginx 启用 SSL
http {
  # 新增
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  # 兼容其他老浏览器的 ssl_ciphers 设置请访问 https://wiki.mozilla.org/Security/Server_Side_TLS

  server {
    listen 80 default_server;
    # 新增
    listen 443 ssl;
    ssl_certificate         /data/nginx/ssl/www.xxx.com.key.pem;
    ssl_certificate_key     /data/nginx/ssl/www.xxx.com.key;
    # ssl_dhparam
    ssl_dhparam             /data/nginx/ssl/dhparam.pem;

    # 其他省略
  }
}
6.检查 Nginx 配置是否正确后重启
/data/nginx/sbin/nginx -t
# 检查无误后,重启nginx
/data/nginx/sbin/nginx -s reload

另外,证书的有效期是三个月,证书续期可以执行

acme.sh --renew -d "xxx.com" -d "*.xxx.com" --dns

本文作者: 江边望海
本文链接: https://www.jiangbianwanghai.com/2018/09/18/Let-s-Encrypt-pan-domain-name-certificate-application-process/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!