Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构,由非营利组织互联网安全研究组(ISRG)运作。
这里将逐步介绍在 BT 面板下如何使用腾讯云域名解析来创建证书。
0、准备腾讯密钥
使用 https://console.dnspod.cn/account/token/apikey 或 https://console.cloud.tencent.com/cam/capi 来创建密钥。
1、安装 certbot
yum install certbot pip3 install certbot-dns-tencentcloud # 或者使用 pip install certbot-dns-tencentcloud
其他域名插件你可以在这里找到:https://eff-certbot.readthedocs.io/en/stable/using.html#dns-plugins。
如:
- certbot-dns-cloudflare
- certbot-dns-digitalocean
- certbot-dns-dnsimple
- certbot-dns-dnsmadeeasy
- certbot-dns-gehirn
- certbot-dns-google
- certbot-dns-linode
- certbot-dns-luadns
- certbot-dns-nsone
- certbot-dns-ovh
- certbot-dns-rfc2136
- certbot-dns-route53
- certbot-dns-sakuracloud
查询已安装的插件:
certbot plugins
2、创建并存储密钥
# root 用户依赖创建目录及文件 ~/.secrets/certbot/tencentcloud.ini # 设置权限 chmod 600 ~/.secrets/certbot/tencentcloud.ini
文件内容为:
dns_tencentcloud_secret_id = TENCENTCLOUD_SECRET_ID dns_tencentcloud_secret_key = TENCENTCLOUD_SECRET_KEY
3、创建证书
certbot certonly -a dns-tencentcloud --dns-tencentcloud-credentials ~/.secrets/certbot/tencentcloud.ini -d a.cn -d *.a.cn -d b.com -d *.b.com --dns-tencentcloud-debug true --pre-hook "service nginx stop" --post-hook "service nginx start"
其中 -d 参数,你可以添加多个域名。
当前你可以在创建证书前使用环境变量(不建议这么做)。
export TENCENTCLOUD_SECRET_ID=<your_secret_id> export TENCENTCLOUD_SECRET_KEY=<your_secret_key>
4、查询证书存放位置
certbot certificates
你会看下类似如下信息:
Found the following certs: Certificate Name: a.cn Serial Number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Key Type: RSA Domains: a.cn *.a.cn Expiry Date: 2025-05-30 13:26:03+00:00 (VALID: 87 days) Certificate Path: /etc/letsencrypt/live/a.cn/fullchain.pem Private Key Path: /etc/letsencrypt/live/a.cn/privkey.pem
Certificate Name 为证书名(吊销时要用)。
Certificate Path 证书位置(下面要用)。
Private Key Path 私钥位置(下面要用)。
5、BT 站点设置证书
如你存放在:/www/letSSL.conf
listen 443 ssl; ssl_certificate /etc/letsencrypt/live/a.cn/fullchain.pem; # 指定SSL证书文件路径 ssl_certificate_key /etc/letsencrypt/live/a.cn/privkey.pem; # 指定SSL证书私钥文件路径 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; ssl_stapling on; ssl_stapling_verify on; ssl_session_timeout 1d; ssl_session_tickets on; http2 on;
在 BT 网站各“配置文件”文件中,增加
# SSL 证书 include /www/letSSL.conf;
6、建立计划任务
因为证书有效期为90天,因此,你需要建立计划任务,根据证书创建时间设置每月几号运行。
类型为:Shell 脚本
名称为:续签Let’s Encrypt证书
周期:每月11日3时0分
脚本内容:
certbot renew /etc/init.d/nginx restart
8、重启 Nginx
重启或重载配置,以生效。
9、吊销证书
certbot revoke --cert-name a.com --reason superseded
其中参数 –cert-name 为 certbot certificates 查询后的证书名(Certificate Name)。
–reason 参数有:
未提供任何理由或 unspecified
当下面的原因代码不适用于吊销请求时,用户不能提供除“未指定”以外的理由代码。
keyCompromise
当用户有理由相信其证书的私钥已被泄露时,必须选择吊销原因“keyCompromise”。例如,未经授权的人可以访问证书的私钥。
如果吊销请求是使用证书私钥而不是用户帐户私钥签署的,Let’s Encrypt 可能会忽略请求中的吊销原因并将原因设置为“keyCompromise”。
superseded
用户在申请新证书以替换其现有证书时,应选择吊销原因“被取代”。
cessationOfOperation
当用户不再拥有证书中的所有域名或由于停止网站而不再使用证书时,应选择吊销原因“停止运营”。
如果吊销请求来自未请求相关证书但已证明对证书中所有标识符的控制权的用户帐户,Let’s Encrypt 可能会忽略请求中的吊销原因并将原因设置为“cessationOfOperation”。
相关: