1. 首页
  2. 系统运维
  3. Linux

Nginx网站免费SSL证书安装自动续签更新

现在网站基本都已经使用HTTPS了,如果想要升级到HTTPS,第一步先得申请下发个安全证书(浏览器信任的证书)。现在很多域名提供商也都提供免费证书的申请。但是一般都是一年有效期(付费证书也有有效期),到期前需要手动更新,否则网站就会不能访问。如果想使用免费且会自动更新续签的SSL证书,可以使用let’s encrypt + acme的组合。

一、ACME安装

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

安装程序会自动做以下操作:

  • 自动把 acme.sh 安装到你的 home 的.acme.sh目录下,即~/.acme.sh/
  • 自动创建一个 bash 的 alias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
  • 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书

二、更改默认证书

acme.sh --set-default-ca  --server  letsencrypt

这里建议更改,因为 acme被ZeroSSL收购,其默认的证书方式为ZeroSSL,生成zerossl需要加邮箱,比较麻烦。

三、生成SSL证书

这里主要使用acme.sh --issue命令来生成证书,生成证书的同时会进行域名的所有权的验证。域名所有权一般有两种验证方式,分别是http网站和dns解析。这里介绍http验证,最简单方便。如果需要dns解析验证,可以参考这篇文章:acme免费证书申请

这里需要注意,如果需要生成泛域名(*.a.com)的证书,我们不能使用HTTP认证域名,必须改用DNS认证的方式。

./acme.sh --issue -d blog.nbqykj.cn --webroot /home/wwwroot/blog.nbqykj.cn
Nginx网站免费SSL证书安装自动续签更新

等待证书签发

四、安装证书

默认生成的证书都放在安装目录下: ~/.acme.sh/,但是不要在web服务器中直接引用目录下的证书文件,也不要手动来拷贝证书文件到具体的web服务器中,手动拷贝会导致之后更新证书流程不能完全自动。

正确方式是使用acme.sh的安装证书命令,acme.sh自动拷贝证书文件到具体目录中,拷贝命令会被记录下来,之后自动更新证书流程也会执行此拷贝步骤,从而实现更新证书流程的完全自动化。

acme.sh --install-cert -d blog.nbqykj.cn \
 --key-file       /etc/nginx/ssl/blog.nbqykj.cn/key.pem \
 --fullchain-file /etc/nginx/ssl/blog.nbqykj.cn/cert.pem \
 --reloadcmd     "service nginx force-reload"

五、自动更新

目前证书在 60 天以后会自动更新,你无需任何操作,因为在acme.sh安装时,已经把相关的自动更新程序写入到crontab中,最后可以通过运行crontab -l确认是否已经安装。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code