Let's Encrypt是一个可以免费获取SSL证书的服务。我在CentOS7上使用了Let's Encrypt并记录了相关命令。由于证书有效期为3个月,因此我还介绍了自动化更新方法。

安装Certbot客户端
安装Certbot客户端,可参考CentOS 7 / RHEL 7 - Let's Encrypt综合门户。对于CentOS7,可以使用以下命令进行安装:
$ sudo yum install epel-release
$ sudo yum install certbot
获取SSL证书
获取SSL证书,可参考Let's Encrypt综合门户中的使用方法SSL/TLS服务器证书获取。
打开80和443端口的防火墙,停止Web服务器(如Apache或Nginx),然后执行以下命令。第一次运行时,会要求输入电子邮件地址并同意使用条款。
$ certbot certonly --standalone -d www.example.com
如果要获取适用于多个FQDN的证书,则可以使用以下命令。
$ certbot certonly --standalone -d www.example.com -d www2.example.com
根据手册,即使Web服务器正在运行,也可以使用以下命令进行获取,但在我的环境中,无法运行(我使用的是运行WordPress的服务器)。
$ certbot certonly --webroot -w /var/www/www.example.com -d www.example.com
当命令正常执行完毕后,最新版本的证书将在/etc/letsencrypt/live下创建符号链接。然后将其配置到Nginx等Web服务器中。以下是Nginx的最小配置:
server {
listen 443 ssl;
server_name {{ cashbook.host }};
root /var/www/www.example.com/current/web;
ssl_certificate /etc/letsencrypt/live/www.example.com/privkey.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/fullchain.pem;
}
自动化更新SSL证书
由于证书的有效期为3个月,因此可以使用以下命令进行更新:
$ sudo certbot renew --pre-hook 'service nginx stop' --post-hook 'service nginx start'
在 CentOS 7 中,可以通过以下步骤设置一个 cron 任务来每月检查一次 SSL 证书是否需要更新,当证书将在1个月之内过期时,它会下载新的证书并重新启动Nginx。
使用命令 crontab -e 编辑当前用户的 crontab 文件。
在文件末尾添加以下行,表示每月的第一天检查 SSL 证书是否需要更新:
0 0 1 * * certbot renew --quiet
这行命令的含义是,每月的第一天零点整(0 0 1),执行 certbot renew 命令来检查 SSL 证书是否需要更新,并且使用 --quiet 选项来减少输出信息。
保存并退出 crontab 文件。
这样,系统就会每月的第一天自动执行 certbot renew 命令,检查 SSL 证书是否需要更新。如果需要更新,certbot 会自动更新证书。如果不需要更新,命令就不会有任何输出。
除特别注明外,本站所有文章均为[果博]原创 » 转载请注明出处来自https://aiguor.com/notes/265.html
果博