本文最后更新于 107 天前,如有失效请评论区留言。
使用 acme.sh 自动续订 HTTPS 证书
简介
HTTPS 是现代 Web 安全的基础,它不仅保护了用户的隐私,还为网站提供了信任度和权威性。但是,HTTPS 证书需要定期更新,否则会过期导致浏览器警告。本文将使用 acme.sh 工具结合腾讯云 DNS 服务来自动续订 HTTPS 证书。这只是针对自己部署,当然你也可以参考我之前的文章使用雷池自动免费申请的 Let’s Encrypt 免费证书,每隔3个月自动更新。
安装 acme.sh
参照官网脚本安装
curl https://get.acme.sh | sh -s [email protected]
记得更改email 邮箱为自己的
生成证书
需要腾讯云的 Secret ID 和 Secret Key,这些可以在腾讯云控制台的API密钥管理中找到。
新建完密钥后把对应的参数复制到服务器上
export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
申请并生成证书
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com
example.com
更改为你的域名
copy证书
把证书copy到指定位置并刷新nginx
acme.sh --install-cert -d example.com \
--key-file /usr/local/nginx/cert/example.com.key.pem \
--fullchain-file /usr/local/nginx/cert/example.com.cert.pem \
--reloadcmd "service nginx force-reload"
如果是自己编译或者部署软件自带nginx,可以用下面的命令替换
--reloadcmd "/usr/local/nginx/sbin/nginx -s reload"
配置nginx
最后把nginx配置更改下,就可以成功实现https并自动续签了
server {
listen 80;
listen 443 ssl;
server_name aaa.example.com;
ssl_certificate /usr/local/nginx/cert/example.com.cert.pem;
ssl_certificate_key /usr/local/nginx/cert/example.com.key.pem;
# 其他 SSL 设置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
# 重定向 HTTP 到 HTTPS
if ($server_port = 80) {
return 301 https://$host$request_uri;
}
location / {
root /web/h5/xxxxx/;
index index.html;
try_files $uri $uri/ /index.html;
}
}