更多方式請查看: letsencrypt/client-options
1. 安裝 acme.sh
#安裝: curl https://get.acme.sh | sh # 注:上面命令執行后會將 acme.sh 工具安裝到 ~/.acme.sh/ 目錄下,以后所有的配置默認也在這個目錄下 # 設置別名 alias: alias acme.sh=~/.acme.sh/acme.sh # 自動為你創建計划任務, 每天 0:00 點自動檢測所有的證書, 如果快過期了, 需要更新, 則會自動更新證書. # 更高級的安裝選項請參考: https://github.com/Neilpang/acme.sh/wiki/How-to-install
2. 生成證書
# acme.sh 實現了 acme 協議支持的所有驗證協議. 一般有兩種方式驗證: http 和 dns 驗證 # 這里僅介紹 DNS 方式 # DNS 驗證方式的好處是, 你不需要任何服務器, 不需要任何公網 ip, 只需要 dns 的解析記錄即可完成驗證. # 壞處是,如果不同時配置 Automatic DNS API,使用這種方式 acme.sh 將無法自動更新證書,每次都需要手動再次重新解析驗證域名所有權。 # acme.sh 支持直接使用主流 DNS 提供商的 API 接口來完成域名驗證以及一些相關操作 具體參考 dnsapi 鏈接 # 至於要哪個DNS提供商的API, 取決於你是在哪里買的域名 # 不同DNS提供商的使用方法,請參考 wiki dnsapi # 比如我 的域名是在 騰訊雲購買的,那么我將使用 dnspod 為例 : # 首先訪問 dnspod.cn # 在 用戶中心->安全設置, 找到 API Token 選項欄,在這里可以生成你的 ID和Token (生成后要保存下來,后面會用到) # 在命令行界面 將 上面生成的 ID和Token導入環境變量里 export DP_Id="生成的ID" export DP_Key="生成的Token" # 然后可以直接使用如下命令發起申請: acme.sh --issue --dns dns_dp -d 'example.com' -d '*.example.com' # 在執行完成后,上面導入的環境變量 DP_Id 和 DP_Key 將被保存在 ~/.acme.sh/account.conf # 命令中 dns_dp 指明使用 騰訊的dns 來生成證書,注意這里第一個域名為頂級域名,后面個為泛域名。泛域名因為有通配符*號,所以建議使用單引號包起來 # 這種方式將自動為你的域名添加一條 txt 解析,驗證成功后,這條解析記錄會被刪除,所以對你來說是無感的,就是要等大概要120秒。 # 注意:需要同時添加裸域名及泛域名的話,請注意要將非泛域名的域名放在前面,否則可能會遇到一些問題。 # 證書生成成功后,默認保存在 ~/.acme.sh/example.com 對應的目錄中。 # 若想自定義證書目錄,可加上 -w 參數 acme.sh --issue --dns dns_dp -d 'example.com' -w /etc/letsencrypt/example.com # 以下是整個生成過程的截圖