话说现在国内的阿里云、腾讯云的免费SSL都从1年期缩短至了3个月,这一季度一次的更新证书属实够烦的,于是乎索性直接用acme实现对SSL证书的自动更新,废话不多说,开整!
首先上godaddy申请API:
然后下载acme:
curl https://get.acme.sh | sh -s email=my@example.com
acme 默认会安装在home目录下:
~/.acme.sh/
设置godday的Key和Secret:
export GD_Key="xxxxxtpTEP3_xxxxxx9dn3Tdwv8PZxxxxx"
export GD_Secret="xxxxxtmxxxxxZwuWrxxxxx"
[!NOTE] 备注
GD_Key 和 GD_Secret 会保存在~/.acme.sh/account.conf
中,并在需要时自动获取,无需手动再设置。
生成证书:
acme.sh --issue --dns dns_gd -d gugesay.com -d *.gugesay.com
必须使用 --install-cert
命令来把证书复制到目标文件,请勿直接使用 ~/.acme.sh/
目录下的证书文件,这里面的文件都是内部使用,而且目录结构将来可能会变化。
因此需要新建一个存放证书的目录:
mkdir /etc/nginx/ssl/gugesay.com
将上述生成后的证书复制过来:
$ sudo cp gugesay.com_ecc/*.cer /etc/nginx/ssl/gugesay.com/
$ sudo cp gugesay.com_ecc/*.key /etc/nginx/ssl/gugesay.com/
acme.sh --install-cert -d gugesay.com \
--key-file /etc/nginx/ssl/gugesay.com/key.pem \
--fullchain-file /etc/nginx/ssl/gugesay.com/cert.pem \
--reloadcmd "sudo service nginx force-reload"
默认情况下,证书每 60 天更新一次(可自定义)。更新证书后,Apache 或者 Nginx 服务会通过 reloadcmd
传递的命令自动重载配置。
注意:reloadcmd
非常重要。证书会自动申请续签,但是如果没有正确的 reloadcmd
命令,证书可能无法被重新应用到 Apache 或者 Nginx,因为配置没有被重载。
最后就是在/etc/nginx/sites-enabled/gugesay
的配置文件中修改两处位置即可:
ssl_certificate /etc/nginx/ssl/gugesay.com/cert.pem; # pem文件的路径
ssl_certificate_key /etc/nginx/ssl/gugesay.com/key.pem; # key文件的路径
然后reload,刷新网站就OK了。
sudo service nginx force-reload