全站HTTPS升級系列(二)基於 acme.sh從Letsencrypt生成免費的泛域名證書

前言

上篇,咱們科普了HTTPS的簡單概念 本篇,咱們介紹基於 acme.shLetsencrypt生成免費的泛域名證書html

環境linux

  • linux服務器,操做系統爲 centos7.2
  • nginx 1.10.1
  • acme.sh v2.8.0

1、安裝acme.sh

# 安裝依賴環境
yum -y install curl cron socat
# 下載並安裝acme.sh
curl  https://get.acme.sh | sh
複製代碼

執行上述命令後,會在/root文件夾下創建一個.acme.sh的目錄nginx

安裝完後執行acme.sh,提示命令沒找到。執行以下指令便可centos

source ~/.bashrc
複製代碼

2、申請域名解析服務商API token ,完成DNS驗證

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"

複製代碼

3、生成泛域名證書

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
複製代碼

4、複製證書到指定位置


疑惑: 爲何要把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

系列文章

全站HTTPS升級系列(一)升級前的科普工做

全站HTTPS升級系列(二)基於 acme.sh從Letsencrypt生成免費的泛域名證書

全站HTTPS升級系列(三)nginx配置全站HTTPS

全站HTTPS升級系列(四)項目代碼升級改造

相關文章
相關標籤/搜索