使用 acme.sh 爲在騰訊雲(DNSPod)解析的域名自動申請證書(API3.0 / 騰訊雲(DNSPod)API 密鑰版本)
ACME(自動證書管理環境)是一個互聯網工程任務組維護的協議,它允許自動化 Web 服務器證書的部署,acme.sh 是支持 ACME 協議流行的客戶端之一,可以通過其實現 SSL 證書的自動申請、續期等等。一直以來,使用 acme.sh 爲域名申請證書都是通過 DNSPod API 來實現的,但由於 DNSPod API 後續將不再維護,同時舊版DNSPod API 將不再有服務承諾,以及舊版 API 存在着接口不穩定、權限無法細分控制、國內站和國際站接口不統一等問題,因此筆者基於 dns_dp 腳本,適配了騰訊雲 API3.0 版本(dns_tencent)。升級後的腳本將同時支持 DNSPod 國內站和國際站(暫僅支持國內站,國際站部分接口官方團隊正在排期適配,預計 2024Q2 完成),不再需要針對國內站和國際站單獨適配,同時支持使用子賬號 API 密鑰申請證書,權限可細分控制,接口更加穩定,使用更加方便、安全。
2023-09-25 更新:騰訊雲 API3.0 腳本已合併到 acme.sh master 分支,可直接升級 acme.sh 後使用或通過一鍵安裝腳本,無需再手動下載dev分支腳本。
安裝 acme.sh
全新安裝
適用於未安裝 acme.sh 的用戶,使用以下命令安裝 acme.sh 客戶端:
安裝 acme.sh
1 | curl https://get.acme.sh | sh -s [email protected] |
or
1 | wget -O - https://get.acme.sh | sh -s [email protected] |
請將 my@example.com 替換爲您的郵箱地址
舊版升級
適用於已安裝 acme.sh 的用戶,請運行以下命令升級 acme.sh 客戶端:
1 | acme.sh --upgrade |
獲取騰訊雲 SecretId 和 SecretKey
方式一:使用主賬號 API 密鑰
方式二:使用子賬號 API 密鑰
步驟一:新建權限策略
選擇
按策略語法創建
-空白模板
,填寫基本信息,並將策略語法修改爲以下內容,並點擊完成
創建。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
"statement": [
{
"action": [
"dnspod:DescribeRecordFilterList",
"dnspod:DescribeRecordList",
"dnspod:CreateRecord",
"dnspod:DeleteRecord"
],
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}如您需要更精細的權限控制,可根據實際需求修改策略語法,如配置資源六段式等,詳情請參考 CAM-DNS 解析 DNSPod。
步驟二:新建子賬號並關聯權限策略
選擇快速創建,填寫用戶信息,並選擇
編程訪問
。配置用戶權限,僅選擇剛剛創建的權限策略,並點擊
確定
保存。點擊
創建用戶
,完成子賬號創建,並記錄保存 SecretId 和 SecretKey。
申請證書
- 將獲取到的 SecretId 和 SecretKey 導入環境變量中,以便 acme.sh 調用。例如:
1
2export Tencent_SecretId="
"
export Tencent_SecretKey="" 1
2export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - 使用 acme.sh 申請證書,例如:例如:
1
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com
運行後,acme.sh 將自動爲您的域名申請證書,並將證書文件保存在1
acme.sh --issue --dns dns_tencent -d acme.dnstest.cc -d *.acme.dnstest.cc
~/.acme.sh/example.com/
目錄下,並且會自動爲您的域名配置證書自動續期任務,無需手動續期。
運行結果如下:
後續操作
安裝證書
acme.sh 不建議直接使用~/.acme.sh/
目錄下的證書文件,而是通過 acme.sh 提供的命令將證書安裝到指定位置,以確保證書的正確使用和續期,詳情請參考 Install the cert to Apache/Nginx etc,以下以Nginx爲例。
1 | acme.sh --install-cert -d example.com \ |
請將example.com
替換爲您的域名,/path/to/keyfile/in/nginx/key.pem
和/path/to/fullchain/nginx/cert.pem
替換爲證書實際路徑,service nginx force-reload
替換爲您使用的 web 服務重載命令。
完成申請後請將證書配置到您的網站中,以 Nginx 爲例,示例如下:
1 | server { |
完成後不要忘記重載服務哦~
現在,請盡情享受 HTTPS 帶來的安全吧!
聯繫我們
如果您在使用過程中遇到任何問題,歡迎報告Issue,或者通過以下方式聯繫我們:
Issue:Report bugs to TencentCloud (DNSPod) DNS API
官方用戶羣:您可在 DNSPod 任一官方用戶羣中聯繫小澤
,點擊加入 DNSPod 官方用戶羣。