acme云服务器生成证书_使用 acme.sh 申请 SSL 证书并且定期自动更新
在我們的實際項目生產過程中往往需要為部署的服務和域名配置 SSL 證書,可以采用的方法有很多種,例如可以申請阿里云的免費 SSL 證書,或者也可以使用 CloudFlare 的 SSL 服務。本文介紹了一種使用 acme.sh 腳本工具來申請 Let’s Encrypt! 免費的 SSL 證書,并能夠在證書快過期時自動重新申請新證書。這樣減輕了運維的負擔,不需要再去記錄證書的過期時間,也不需要再手動申請新證書和手動進行更新了。
一、安裝 acme.sh 腳本
acme.sh 的腳本安裝非常簡單,只需要在終端中執行如下命令:
1curl https://get.acme.sh | sh
(如果系統未安裝 curl 工具,請先進行安裝)
二、驗證域名并生成證書
acme.sh 驗證域名的方式一般有兩種方式:HTTP 驗證和 DNS 驗證。
HTTP 驗證的方式是需要往域名特定的 url 下面放置一個 txt 文件,用于驗證你確實擁有該域名。
本文推薦的方式是使用 DNS 驗證的方式,使用這種方式可以通過使用域名解析商提供的 API 自動添加 DNS 的 txt 記錄來完成驗證,是最簡單、最快捷的方式。使用這種方式無需驗證 IP,可以方便地實現 SSL 證書的自動申請和續簽。
acme.sh 目前支持阿里云,CloudFlare,DNSpod,Cloudxns,Godaddy 以及 ovh 等數十種解析商的 API 自動集成,本文以阿里云和 CloudFlare 為例來介紹如何來驗證域名。
1. 阿里云(Aliyun)
如果你的域名解析商是阿里云,那么你可以采用這種方式來驗證域名。
首先,你需要為阿里云賬號創建一個子賬號來為更新 DNS 解析記錄的操作申請一個 API Key,訪問阿里云 RAM 訪問控制,創建一個用戶。
我們可以創建一個 acme 用戶:
在分配權限時,分配 AliyunDNSFullAccess 的權限:
之后會分配 Key 和 Secret,這部分數據需要妥善保存。
可以將 Key 和 Secret 放到終端的環境變量中:
1vi ~/.bashrc
把 Key 和 Secret 添加到文件末尾:
1
2export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxx"
使環境變量生效:
1source ~/.bashrc
下面執行如下命令來驗證域名(以 example.com 域名為例)并生成證書:
1acme.sh --issue --dns dns_ali -d example.com -d *.example.com
執行后的結果:
1
2
3
4[Fri Oct 23 13:21:09 CST 2020] Your cert is in /root/.acme.sh/ example.com/ example.com.cer
[Fri Oct 23 13:21:09 CST 2020] Your cert key is in /root/.acme.sh/ example.com/ example.com.key
[Fri Oct 23 13:21:09 CST 2020] The intermediate CA cert is in /root/.acme.sh/example.com/ca.cer
[Fri Oct 23 13:21:09 CST 2020] And the full chain certs is there: /root/.acme.sh/example.com/fullchain.cer
你可以將 nginx 等 SSL 配置指向該目錄,也可以使用如下命令,將證書安裝到指定目錄:
1
2
3
4
5acme.sh --issue --dns dns_ali -d example.com -d *.example.com\
--installcert\
--key-file /etc/nginx/cert.d/example.com.key\
--fullchain-file /etc/nginx/cert.d/example.com.pem\
--reloadcmd "nginx -s reload"
2. CloudFlare
如果你的域名解析商是 CloudFlare,那么你可以采用這種方式來驗證域名。
首先,你需要申請一個 CloudFlare 的 API KEY,打開 https://dash.cloudflare.com/profile/api-tokens ,Create Token:
按后續提示操作,生成具有更新 DNS 權限的 API Key。
可以將 CloudFlare 登錄郵箱和 Key 放到終端的環境變量中:
1vi ~/.bashrc
把 Key 和 Secret 添加到文件末尾:
1
2export CF_Email="xxxxxx"
export CF_Key="xxxxxx"
使環境變量生效:
1source ~/.bashrc
下面執行如下命令來驗證域名(以 example.com 域名為例)并生成證書:
1acme.sh --issue --dns dns_cf -d example.com -d *.example.com
執行后的結果:
1
2
3
4[Fri Oct 23 13:21:09 CST 2020] Your cert is in /root/.acme.sh/ example.com/ example.com.cer
[Fri Oct 23 13:21:09 CST 2020] Your cert key is in /root/.acme.sh/ example.com/ example.com.key
[Fri Oct 23 13:21:09 CST 2020] The intermediate CA cert is in /root/.acme.sh/example.com/ca.cer
[Fri Oct 23 13:21:09 CST 2020] And the full chain certs is there: /root/.acme.sh/example.com/fullchain.cer
你可以將 nginx 等 SSL 配置指向該目錄,也可以使用如下命令,將證書安裝到指定目錄:
1
2
3
4
5acme.sh --issue --dns dns_cf -d example.com -d *.example.com\
--installcert\
--key-file /etc/nginx/cert.d/example.com.key\
--fullchain-file /etc/nginx/cert.d/example.com.pem\
--reloadcmd "nginx -s reload"
二、自動續期
執行完上述命令之后,腳本會在 cron 定時任務中加上一個定時任務,用于定期檢查證書是否過期,并且自動更新 SSL 證書。使用如下命令可以查看該定時任務:
1crontab -l
三、更新 acme.sh
目前由于 acme 協議和 Let’s Encrypt! 會時常更新,因此需要對 acme.sh 腳本進行更新:
1acme.sh --upgrade
也可以開啟自動更新:
1acme.sh --upgrade --auto-upgrade
關閉自動更新:
1acme.sh --upgrade --auto-upgrade 0
本文的版權歸作者 羅遠航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以進行轉載、分享,但不可在未經允許的情況下用于商業用途;轉載請注明出處。感謝配合!
總結
以上是生活随笔為你收集整理的acme云服务器生成证书_使用 acme.sh 申请 SSL 证书并且定期自动更新的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: jsoup 获取html中body内容_
- 下一篇: 姜活的作用与功效
