本笔记操作的环境:
系统: cento 7.5
1、安装 snap
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
2、 确认 snap 是最新的
sudo snap install core
sudo snap refresh core
3、移除旧的 certbot-auto 或者其他 certbot os 包
# sudo apt-get remove certbot # ubuntu 用这个
# sudo dnf remove certbot
sudo yum remove certbot # 我这里用的这个
4、安装 certbot
sudo snap install --classic certbot
5、软件接到系统目录, 方便调用.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
6、生成证书(我这里采用了 certonly, 所以下文需要手动在 nginx 中配置证书)
具体参数的含义可以通过 certbot --help 查看
certbot certonly --webroot --webroot-path /home/wwwroot/xxx.com/ -d xxx.com --agree-tos --email 通知邮箱
7、在 nginx 的配置文件中,配置 ssl 证书, vim /etc/nginx.conf (根据自己的实际目录操作)
// 部分供参考
# 将 http 请求重定向到 https
server {
listen 80;
server_name xxx.com;
rewrite ^(.*)https://xxx.com:443/1 permanent; # 永久将 http://xxx.com 重定向到 https://xxx.com, 根据是否要保留 http://xxx.com 访问决定是否配置。
}
server
{
listen 443 ssl;
# 上面步骤证书生成之后会提示证书路径,或者通过 certbot certificates 命令查看证书位置.
ssl_certificate /证书路径/fullchain.pem;
ssl_certificate_key /证书路径/privkey.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;
server_name xxx.com; # 站点域名
index index.html index.htm index.php;
root /home/wwwroot/xxx.com; # 站点实际的 web 目录
... # 省略更多
8、设置定时计划每 2.5 个月更新证书(因为免费证书有效期只有三个月)
a、renew.sh 的脚本
#/bin/sh
sudo certbot renew
b、设置定时计划 vim /etc/crontab
* * * 2 20 root /更新脚本的绝对路径/renew.sh
踩过的坑, certbot 命令似乎会从读取一个配置文件,但我不知道那个是配置文件,于是每次提示 /etc/nginx/xxx not found 就做一个软连接, 终于搞好了。
参考:
https://certbot.eff.org/lets-encrypt/centosrhel7-nginx
https://snapcraft.io/docs/installing-snapd
其他的安装证书方式参考:
https://github.com/acmesh-official/acme.sh