上篇,咱們科普了HTTPS的簡單概念 本篇,咱們介紹基於 acme.sh
從Letsencrypt
生成免費的泛域名證書html
環境linux
centos7.2
nginx 1.10.1
acme.sh v2.8.0
# 安裝依賴環境
yum -y install curl cron socat
# 下載並安裝acme.sh
curl https://get.acme.sh | sh
複製代碼
執行上述命令後,會在/root
文件夾下創建一個.acme.sh
的目錄nginx
安裝完後執行acme.sh
,提示命令沒找到。執行以下指令便可centos
source ~/.bashrc
複製代碼
DNS驗證的意義在於證實域名的全部人是你,而不是別人。安全
acme.sh
是經過操做當前域名的DNS解析記錄,來自動完成DNS校驗的,這樣省了咱們不少力氣,並且不容易出錯。bash
可是acme.sh
不是隨隨便便就就能操做當前域名的DNS解析記錄的,必須經過當前域名的域名註冊服務商受權才能夠。這就須要用到了API token
服務器
目前acme.sh
支持的域名註冊服務商有阿里雲,亞馬遜AWS,微軟Azure,DNSPod等微信
若是當前域名是在騰訊雲上註冊的:curl
本人的域名就是在騰訊雲上註冊的,先說下本人所經歷的一些波折:post
本人的域名是在騰訊雲上面註冊的,因而想固然的覺得域名的註冊服務商就是騰訊雲,然而沒找到
acme.sh
對騰訊雲的支持的配置項,讓我百思不得其解。 後來看騰訊雲後臺,看到域名解析服務器地址是f1g1ns1.dnspod.net
,猜測莫非騰訊雲背後用的是委託dnspod來進行域名解析的? 而後發現了《DNSPod併入騰訊雲,創始人吳洪聲離開》這條新聞,才知道dnspod和騰訊雲是一家。 換句話說,若是你的域名是託管在了騰訊雲上面的,那麼你域名的解析服務商就是DNSPod。 你能夠用騰訊雲的帳號或者騰訊雲綁定的QQ,微信登陸dsnpod的後臺。
登陸 dnspod後臺。若是域名是在騰訊雲上註冊的,那麼能夠用騰訊雲的帳號密碼或者騰訊雲綁定的QQ、微信登陸。
點擊左側的安全設置,『建立API Token』。
建立成功後,千萬記着把ID和Token記錄下來,由於窗口一旦關閉信息就沒法找回了。
執行以下命令,把DP_Id和DP_Key的值替換成你剛剛申請的id和token(注意空格和中英文引號)
export DP_Id="xxxxxxxx"
export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
複製代碼
若是當前域名是在阿里雲上註冊的:
請先前往阿里雲後臺獲取App_Key跟App_Secret 。,而後執行如下腳本
# 替換成從阿里雲後臺獲取的密鑰
export Ali_Key="xxxx"
export Ali_Secret="xxxxxxxxxxxxxxxxxxxxxxxxxxx"
複製代碼
acme.sh --issue --dns dns_dp -d msh.com -d *.msh.com
複製代碼
正常狀況下,該命令執行成功須要120秒。
若是這個過程當中報錯,能夠加上debug參數,從新執行一遍,查看更詳盡的錯誤緣由(90%的問題都在於token不合法)
acme.sh --issue --dns dns_dp -d msh.com -d *.msh.com --debug 2
複製代碼
疑惑: 爲何要把acme.sh
生成的證書位置從默認生成位置拷貝到其它地方?
解疑: 由於acme.sh
生成的文件夾結構可能會變,因此須要將證書複製到別的位置
疑惑: 爲何不能手動經過mv
或者 cp
命令來複制證書到指定位置?
解疑: SSL證書是有有效期的,到期acme.sh
會自動更新你的安全證書,並重啓nginx
服務器,讓證書生效。因此你必須告訴acme.sh
你指定的SSL證書存放位置,以及重啓nginx
服務器的命令。經過--installcert
參數,指定的全部參數都會被自動記錄下來, 並在未來證書自動更新之後, 被再次自動調用.
以下,本人指定的證書存放目錄爲/mycertify/ssl
重啓nginx服務器的命令爲/usr/local/nginx/sbin/nginx -s reload
完整的安裝證書命令以下:
acme.sh --installcert -d msh.com --key-file /mycertify/ssl/msh.com.key --fullchain-file /mycertify/ssl/msh.com.cer --reloadcmd "/usr/local/nginx/sbin/nginx -s reload"
複製代碼
至此,經過acme.sh
生成泛域名證書大功告成。
下篇,咱們講解如何經過生成的SSL證書,基於nginx配置全站https
系列文章