Certbot配置免费的泛域名 SSL证书

下载certbot-auto

wget https://dl.eff.org/certbot-auto
如果是基于Debian或RHEL的系统会安装失败,采用另一种安装方式snap

首先进行安装依赖等配置
yum install epel-release                             //安装epel
yum install snapd                                      //安装snapd
systemctl enable --now snapd.socket     //启用snapd.socket
ln -s /var/lib/snapd/snap /snap               //创建软链接
snap install --classic certbot                  //安装certbot
ln -s /snap/bin/certbot /usr/bin/certbot //创建certbot软链接
如果之前安装过Certbot出现了问题,可以进行重装

yum remove certbot                              //卸载certbot
rm /usr/local/bin/certbot-auto              //删除安装文件
rm -rf /opt/eff.org/certbot

nginx检查是否开启http_ssl_module模块

不开启会出现nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
通过 nginx -V查看是否开启该模块,如果没有开启,执行下面步骤开启(关闭 nginx,否则会出现 80 端口占用问题)
cd /usr/local/src/nginx
./configure --prefix=/usr/local/nginx --with-http_flv_module  --with-http_ssl_module   //安装ssl模块
make # make安装,这里不要像以前一样 make&make install 否则会覆盖原有目录
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak  //nginx做原有备份
nginx -V    //查看模块是否安装成功
sudo systemctl start nginx //运行 nginx

运行命令生成证书

sudo certbot certonly  -d "*.xxx.com" -d xxxx.com --manual --preferred-challenges dns-01  --server https://acme-v02.api.letsencrypt.org/directory(需要手动添加 txt 解析)
或者
sudo certbot certonly   -d "*.xxx.com" -d xxxx.com --manual --preferred-challenges dns --manual-auth-hook "/etc/letsencrypt/renwal-hook/au.sh php aly add" --manual-cleanup-hook "/etc/letsencrypt/renwal-hook/au.sh php aly clean"(通过脚本调用域名解析 api,自动解析)
证书目录在/etc/letsencryp下

配置 nginx 配置文件

  listen                               [::]:443 ssl http2;
    location / {
        return 301 https://$host$request_uri; 
    }
    ssl_session_timeout  1d;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_tickets  off;
    ssl_protocols        TLSv1.2 TLSv1.3;
    ssl_certificate                      /home/www/letsencrypt/live/xxx.com/fullchain.pem;
    ssl_certificate_key                  /home/www/letsencrypt/live/xxxx.com/privkey.pem;
    ssl_trusted_certificate              /home/www/letsencrypt/live/xxxx.com/chain.pem;
        eturn                  301 https://www.uchelian.com$request_uri;
        重启 nginx,查看网站证书是否配置成功

证书自动续签

因为证书只有三个月有效期,避免每三个月进行手动申请,对系统进行自动续签操作
git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
cd certbot-letencrypt-wildcardcertificates-alydns-au
chmod 0777 au.sh

domain.ini文件添加您的根域名

配置DNS API 密钥,由于需要通过 API 操作阿里云 DNS, 腾讯云 DNS 的记录,所以需要去域名服务商哪儿获取 API 密钥,然后配置在 au.sh 文件中:
ALY_KEYALY_TOKEN[阿里云 API key 和 Secrec 官方申请文档](https://help.aliyun.com/knowledge_detail/38738.html)TXY_KEYTXY_TOKEN[腾讯云 API 密钥官方申请文档](https://console.cloud.tencent.com/cam/capi)HWY_KEYHWY_TOKEN: [华为云 API 密钥官方申请文档](https://support.huaweicloud.com/devg-apisign/api-sign-provide.html)
GODADDY_KEYGODADDY_TOKEN[GoDaddy API 密钥官方申请文档](https://developer.godaddy.com/getstarted)。

目前该工具支持五种运行环境和场景,通过 hook 文件和参数来调用:
PHP(>4以上版本均可)
au.sh php aly add/clean:PHP操作阿里云DNS,增加/清空DNS。
au.sh php txy add/clean:PHP操作腾讯云DNS,增加/清空DNS。
au.sh php godaddy add/clean:PHP操作GoDaddy DNS,增加/清空DNSPython(支持2.73.7,无需任何第三方库)
au.sh python aly add/clean:Python操作阿里云DNS,增加/清空DNS。
au.sh python txy add/clean:Python操作腾讯云DNS,增加/清空DNS。
au.sh python hwy add/clean:Python操作华为云DNS,增加/清空DNS。
au.sh python godaddy add/clean:Python操作GoDaddy DNS,增加/清空DNS。
根据自己服务器环境和域名服务商选择任意一个 hook shell(包含相应参数),具体使用见下面。

证书有效期<30天才会renew,所以crontab可以配置为1天或11 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns  --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
本作品采用《CC 协议》,转载必须注明作者和本文链接
hmlSunShine
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!