自己搭建了一个博客网站(就是这了),为了提升安全需要用 HTTPS 连接。
我的域名服务是通过腾讯云购买的,那边可以生成免费的证书,每次都是手动的去免费生成操作,而且还只能是单域名证书,域名如果多了,手动起来就很麻烦了。
上次搭建 VPS 的时候,看到可以使用 ACME 进行自动证书生成且可以自动续期,果断让 ChatGPT 帮忙生成操作过程。
当然不问 ChatGPT 也可以搜索查看教程,因为之前看过教程,所以我根据命令来操作也知道如何玩转。
相关的教程:
官网:
https://github.com/acmesh-official/acme.sh
指导的博客:
https://www.panyanbin.com/article/c44653d8.html
看教程至少需要花费半小时,如果把需求丢给 ChatGPT 它 1 分钟就出答案了,我们 5 分钟完成相关工作。
以下是整个操作过程:
首先,提出需求:
我打算用 acmesh 进行证书生成。
1、腾讯云服务器,系统为 CentOS
2、域名是在腾讯云购买的,可以拿到 DNSPod 的API密钥,假设id=123,token=456
3、生成通用域名证书:*.domain.com
4、可自动续期5、web服务使用的是 nginx
6、假设nginx 解析证书路径:/opt/ssl 请给出操作步骤。
ChatGPT回答,操作的步骤:
根据您的需求,我为您提供了一个详细的步骤指南,来说明如何在 CentOS 服务器上使用 acme.sh 生成通用域名证书(*.domain.com)并自动续期。这里假设您已经拥有 DNSPod 的 API 密钥(id=123,token=456)。
1、安装 acme.sh:
curl https://get.acme.sh | sh
安装成功后,关闭当前终端并重新打开一个新的终端以使 acme.sh 生效。
设置别名,便于后续操作:
alias acme.sh=~/.acme.sh/acme.sh
更改默认证书:
acme 被 ZeroSSL 收购,其默认的证书方式为 ZeroSSL,但此证书生成时会携带邮箱,因此更换为letsencrypt。
当然,也可以在生成证书时加一个 –server 参数来决定生成什么证书
acme.sh --set-default-ca --server letsencrypt
2、配置环境变量。设置 DNSPod 的 API 密钥(id 和 token):
export DP_Id="123"
export DP_Key="456"
3、使用 acme.sh 为您的域名颁发通用域名证书。请将 domain.com 替换为您的实际域名:
acme.sh --issue --dns dns_dp -d "*.domain.com" -d domain.com
颁发成功后,证书文件将默认保存在 ~/.acme.sh/domain.com/ 目录中。
4、安装证书到 Nginx。假设 Nginx 的 SSL 证书路径为 /opt/ssl,请执行以下命令:
mkdir -p /opt/ssl
acme.sh --install-cert -d "*.domain.com" -d domain.com \
--cert-file /opt/ssl/cert.pem \
--key-file /opt/ssl/key.pem \
--fullchain-file /opt/ssl/fullchain.pem \
--reloadcmd "systemctl reload nginx"
### 如果不需要重启 Nginx
mkdir /opt/ssl
acme.sh --install-cert -d "*.domain.com" -d domain.com --fullchain-file /opt/ssl/fullchain.pem --key-file /opt/ssl/key.pem
5、更新 Nginx 配置以使用新的 SSL 证书。编辑您的 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/domain.com。将 domain.com 替换为您的实际域名:
server {
listen 80;
server_name domain.com www.domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name domain.com www.domain.com;
ssl_certificate /opt/ssl/fullchain.pem;
ssl_certificate_key /opt/ssl/key.pem;
# 其他配置项...
}
6、重新加载 Nginx 应用更改:
sudo systemctl reload nginx
acme.sh 会自动处理证书的续期。每 60 天,它会尝试续订证书,并在成功续订后重新加载 Nginx 服务。现在您已经完成了证书的生成和自动续期
按照命令,在服务器成功执行无误,最后再检查下定时器是否有了,确保自动续期成功。
腾讯的 DNS Pod 获取位置如图: