1、安裝 acme.sh
進入服務器,執行命令:
$ curl https://get.acme.sh | sh
普通用戶和root用戶都可以安裝使用,安裝腳本其實是進行了如下操作:1)會把
acme.sh
安裝到你所執行命令用戶的用戶目錄下:~/.acme.sh/
2)會創建bash
的alias
,方便你的使用:alias > acme.sh=~/.acme.sh/acme.sh
3)會自動為你創建cronjob
腳本,每天零點自動檢測所有的證書,如果某證書快過期需要更新,則會自動更新該證書。
安裝過程不會污染已有的系統任何功能和文件,所有后續的修改都將限制在安裝目錄中:~/.acme.sh/
2、驗證域名並生成證書
acme.sh
實現了 acme
協議支持的所有驗證協議,通常一般有幾種方式驗證域名:HTTP文件驗證
和 DNS驗證
等,具體驗證方式可查閱腳本github文檔。
方式1、HTTP文件驗證:
$ acme.sh --issue -d qq.com -d *.qq.com -w /home/webroot
注意
:對於通配符證書需要加-d 域名 -d *.域名
兩個參數-w
即webroot,為該域名
通過http所訪問到的本地目錄上面這段過程將會在/home/webroot
創建一個.well-known
的文件夾,同時 Let’s Encrypt 將會通過你要注冊的域名去訪問那個文件來確定權限,它可能會去訪問 http://qq.com/.well-known/ 這個路徑,驗證成功會自動清理。
方式2、DNS-API驗證: 通過DNS服務器提供 key
與 secret
實現自動驗證,詳情 https://github.com/Neilpang/acme.sh/tree/master/dnsapi 例如,在騰訊雲解析的域名,請前往 https://www.dnspod.cn/console/user/security 控制台中申請子賬號 API Token
並執行命令:
$ export DP_Id="6*ID*0" $ export DP_Key="aa445e***TOKEN***5fe26e"
$ acme.sh --issue -d qq.com -d *.qq.com --dns dns_dp
注意
:對於通配符證書需要加-d 域名 -d *.域名
兩個參數DP_Id
和DP_Key
將會保存在~/.acme.sh/account.conf
執行上述命令后,證書文件將會自動申請被存放在 ~/.acme.sh/
對應的域名文件夾中,如:~/.acme.sh/qq.com
。后續 acme.sh 將會自動更新該文件夾內的證書。
3、部署nginx
參考:https://github.com/Neilpang/acme.sh/wiki/說明
1) 拷貝證書
$ acme.sh --install-cert -d qq.com \ --key-file /etc/nginx/ssl/qq.com.key \ --fullchain-file /etc/nginx/ssl/qq.com.cer \ --reloadcmd 'service nginx force-reload'
注意
:通過該命令可將~/.acme.sh/qq.com
內的證書copy到指定位置/etc/nginx
為nginx服務器實際的地址(可修改為自己服務器對應的地址)service nginx force-reload
為nginx重啟命令(可修改為自己服務器對應的命令),force-reload
會重載證書后續acme.sh
簽發了新證書后就自動完成該拷貝過程
2) 配置nginx
Nginx-Conf vim /etc/nginx/conf.d/qq.com.conf
:
# http(80) -> https(443/ssl) server { listen 80; server_name qq.com; rewrite ^(.*)$ https://$host$request_uri; } # qq.com server { listen 443; server_name qq.com; include ssl/qq.com.ssl.conf; location / { # todo } }
SSL-Conf vim /etc/nginx/ssl/qq.com.ssl.conf
:
ssl on; ssl_certificate ssl/qq.com.cer; ssl_certificate_key ssl/qq.com.key;
參考地址 https://cloud.tencent.com/developer/article/1500063