ACME(自動證書管理環jìng)是一個互聯網工程任務組維護的協,它允許自動huà Web 服務器證書的部shǔacme.sh 是支chí ACME 協議流行的客戶端之,可以通過其實xiàn SSL 證書的自動申qǐng、續期děng等。一直以lái,使yòng acme.sh 爲域名申請證書都是通guò DNSPod API 來實現de,但由 DNSPod API 後續將不再維,同時舊bǎnDNSPod API 將不再有服務承nuò,以及舊bǎn API 存在着接口不穩dìng、權限無法細分控zhì、國內站和國際站接口不統一等問,因此筆者基 dns_dpběn,適配了騰訊yún API3.0 版běndns_tencent)。升級後的腳本將同時支chí DNSPod 國內zhàn和國際站(暫僅支持國內zhàn,國際站部分接口官方團隊正在排期適pèi,預 2024Q2 完chéng),不再需要針對國內站和國際站單獨適pèi,同時支持使用子賬hào API 密鑰申請證shū,權限可細分控zhì,接口更加穩dìng,使用更加方便biàn、安quán

2023-09-25 更xīn:騰訊yún API3.0 腳本已合併dào acme.sh master 分zhī,可直接升 acme.sh 後使用或通過一鍵安裝腳běn,無需再手動下zàidev分支腳běn

zhuāng acme.sh

全新安zhuāng

適用於未安zhuāng acme.sh 的用,使用以下命令安zhuāng acme.sh 客戶duān

zhuāng acme.sh

1
curl https://get.acme.sh | sh -s [email protected]

or

1
wget -O -  https://get.acme.sh | sh -s [email protected]

jiāng my@example.com 替換爲您的郵箱地zhǐ

舊版升

適用於已安zhuāng acme.sh 的用,請運行以下命令升 acme.sh 客戶duān

1
acme.sh --upgrade

獲取騰訊yún SecretId SecretKey

方式:使用主賬hào API 密yào

  1. 騰訊雲控制tái,進 訪問管miàn,點擊左側菜單欄de訪問密yào,進 API 密鑰管理頁miàn
    訪問密鑰

  2. 新建密鑰,創jiàn API 密yào,並記錄保cún SecretId SecretKey。

方式èr:使用子賬hào API 密yào

步驟:新建權限策lüè

  1. 騰訊雲控制tái,進 訪問管miàn,點擊左側菜單欄delüè,進入策略管理頁miàn,並點新建自定義策略
    策略

  2. 按策略語法創建-空白模板,填寫基本信,並將策略語法修改爲以下內róng,並點完成jiàn

    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"
    }

    策略語法

    如您需要更精細的權限控zhì,可根據實際需求修改策略語,如配置資源六段式děng,詳情請參kǎo CAM-DNS 解 DNSPod

步驟èr:新建子賬號並關聯權限策lüè

  1. 騰訊雲控制tái,進 訪問管miàn,點擊左側菜單欄de用戶列biǎo,進入用戶列表頁miàn,並點新建用戶
    用戶列表

  2. 選擇快速創jiàn,填寫用戶信,並選編程訪問
    快速創建
    編程訪問

  3. 配置用戶權xiàn,僅選擇剛剛創建的權限策lüè,並點確定cún
    用戶權限

  4. 創建用戶,完成子賬號創jiàn,並記錄保cún SecretId SecretKey。
    創建用戶
    SecretId 和 SecretKey

申請證shū

  1. 將獲取到de SecretId SecretKey 導入環境變量zhōng,以便biàn acme.sh 調yòng
    1
    2
    export Tencent_SecretId=""
    export Tencent_SecretKey=""
    1
    2
    export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  2. 使yòng acme.sh 申請證shū,例
    1
    acme.sh --issue --dns dns_tencent -d example.com -d *.example.com
    1
    acme.sh --issue --dns dns_tencent -d acme.dnstest.cc -d *.acme.dnstest.cc
    運行hòu,acme.sh 將自動爲您的域名申請證shū,並將證書文件保存zài~/.acme.sh/example.com/目錄xià,並且會自動爲您的域名配置證書自動續期任,無需手動續
    運行結果如xià
    申請證書1
    申請證書2

後續操zuò

安裝證shū

acme.sh 不建議直接使yòng~/.acme.sh/目錄下的證書文jiàn,而是通guò acme.sh 提供的命令將證書安裝到指定位zhì,以確保證書的正確使用和續,詳情請參kǎo Install the cert to Apache/Nginx etc下以Nginx爲

1
2
3
4
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"

jiāngexample.com替換爲您的域míng/path/to/keyfile/in/nginx/key.pem/path/to/fullchain/nginx/cert.pem替換爲證書實際路jìngservice nginx force-reload替換爲您使用de web 服務重載命lìng

完成申請後請將證書配置到您的網站zhōng Nginx 爲,示例如xià

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 443 ssl http2;

server_name example.com;

# 請替換爲證書實際路jìng
ssl_certificate /path/to/keyfile/in/nginx/cert.pem;
ssl_certificate_key /path/to/fullchain/nginx/key.pem;

ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
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:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_prefer_server_ciphers on;
location / {
root /nginx/www/html;
}
}

完成後不要忘記重載服務ó~

zài,請盡情享shòu HTTPS 帶來的安全ba

聯繫我men

如果您在使用過程中遇到任何問,歡迎報gàoIssue,或者通過以下方式聯繫我men
Issue:Report bugs to TencentCloud (DNSPod) DNS API
官方用戶qún:您可zài DNSPod 任一官方用戶羣中聯小澤,點擊加 DNSPod 官方用戶qún