免费SSL证书Let's Encrypt的使用方法

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

Let’s Encrypt

安装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

评论 抢沙发

表情 格式
  • 昵称 (必填)
  • 邮箱 (必填)

关注移动互联网,与科技共成长

联系我们