Guo Qiang

为网站添加 SSL 证书

发布日期 2021-05-25 11:32:43已读 576 次LIFE
image

一直想把自己的网站加上 SSL 证书,昨天终于找到一个既方便又免费的方法,就是 acme.sh ,它可以自动生成证书并自动更新证书,省心省力,于是将自己的两个域名添加了 SSL 证书,实现起来还是比较简单的。

1. 安装 acme.sh


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


2. 生成证书

acme.sh 目前支持 cloudflare,dnspod,cloudxns,godaddy 以及 ovh 等数十种解析商的自动集成,我的域名在 dnspod 中管理,首先需要进入 dnspod 生成 API Token ,并将生成的 ID 和 Token 记录下来写在下面的命令中,证书就会自动生成了。


export DP_Id="1234"
export DP_Key="xxxxxxxxxxxxx"

acme.sh   --issue   --dns dns_dp   -d domain.com  -d www.domain.com


如果要申请多个域名的证书,只需执行下面的命令即可,无需再次指定 api id 和 api key,当然,如果域名不在 dnspod 也是需要重新指定 api id 和 api key 的。


acme.sh   --issue   --dns dns_dp   -d domain2.com  -d www.domain2.com


另外,还有一种 http 生成证书的方式,这种方式无需提供 API Token (由于 acme.sh 升级,默认 CA 为 ZeroSSL,如继续要使用 letsencrypt 则需要在命令行使用 --server letsencrypt 指定出来):


acme.sh --issue  -d domain3.com  -d www.domain3.com --nginx --server letsencrypt


3. 安装证书

使用 --install-cert 命令,并指定目标位置, 然后证书文件会被拷贝到相应的位置。

Nginx example:


acme.sh --install-cert -d domain.com \
--key-file       /usr/share/nginx/ssl/domain.com_key.pem  \
--fullchain-file /usr/share/nginx/ssl/domain.com_cert.pem \
--reloadcmd     "service nginx force-reload"


4. 修改 nginx 配置


# 将 http 转成 https
server {
        listen 80;
        server_name www.domain.com domain.com;
        rewrite ^(.*)$ https://${server_name}$1 permanent;
}

# 增加 ssl 配置
server {
       listen       443 ssl;
       server_name  www.domain.com domain.com;

       ssl on;
       ssl_certificate     /usr/share/nginx/ssl/domain.com_cert.pem;
       ssl_certificate_key /usr/share/nginx/ssl/domain.com_key.pem;
       ssl_session_timeout 5m;
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_prefer_server_ciphers on;

       ...
}


5. 更新证书

目前证书在 60 天以后会自动更新,无需任何操作,实际上当安装了 acme.sh 后已经自动创建了 cronjob,在每天的 0:00 点后自动检测所有的证书,对于快过期的证书,会自动更新。

6. 更新 acme.sh

升级到最新版:


acme.sh  --upgrade


如果不想手动升级,可以开启自动升级,acme.sh 会自动保持更新:


acme.sh  --upgrade  --auto-upgrade


Copyright © 2019~2021 Guo Qiang