Let's Encrypt作為一個(gè)公共且免費(fèi)SSL的項(xiàng)目逐漸被廣大用戶傳播和使用,,是由Mozilla,、Cisco、Akamai,、IdenTrust,、EFF等組織人員發(fā)起,主要的目的也是為了推進(jìn)網(wǎng)站從HTTP向HTTPS過(guò)度的進(jìn)程,,目前已經(jīng)有越來(lái)越多的商家加入和贊助支持,。
目前Let's Encrypt免費(fèi)SSL證書(shū)默認(rèn)是90天有效期,但是我們也可以到期自動(dòng)續(xù)約,,不影響我們的嘗試和使用,,90 天后到期后需要手動(dòng)(這里說(shuō)“手動(dòng)”其實(shí)不嚴(yán)謹(jǐn)了,現(xiàn)在通過(guò)腳本基本上都是自動(dòng)智能續(xù)期了)的續(xù)期,。關(guān)于自動(dòng)續(xù)費(fèi)后續(xù)會(huì)繼續(xù)跟進(jìn),。下面就一起來(lái)學(xué)習(xí)申請(qǐng) Let's Encrypt的免費(fèi)通配符配吧。
第一,、安裝Let's Encrypt前的準(zhǔn)備工作
根據(jù)官方的要求,,我們?cè)赩PS、服務(wù)器上部署Let's Encrypt免費(fèi)SSL證書(shū)之前,,需要系統(tǒng)支持Python2.7以上版本以及支持GIT工具,。這個(gè)需要根據(jù)我們不同的系統(tǒng)版本進(jìn)行安裝和升級(jí),因?yàn)橛行┓?wù)商提供的版本兼容是完善的,,尤其是debian環(huán)境兼容性比CentOS好一些,。
比如CentOS 6 64位環(huán)境不支持GIT,我們還可以參考"Linux CentOS 6 64位系統(tǒng)安裝Git工具環(huán)境教程"和"9步驟升級(jí)CentOS5系統(tǒng)Python版本到2.7"進(jìn)行安裝和升級(jí),。最為 簡(jiǎn)單的就是Debian環(huán)境不支持,,可以運(yùn)行"apt-get -y install git"直接安裝支持,,如果是CentOS直接運(yùn)行"yum -y install git-core"支持。這個(gè)具體遇到問(wèn)題在討論和搜索解決方案,,因?yàn)槊總€(gè)環(huán)境,、商家發(fā)行版都可能不同。在這篇文章中,,小編采用的是debian 7 環(huán)境,。
第二、快速獲取Let's Encrypt免費(fèi)SSL證書(shū)
Let's Encrypt 證書(shū)申請(qǐng)域名DNS驗(yàn)證指南
場(chǎng)景一(Let's Encrypt v2 通配符 DNS 驗(yàn)證)
在DNS系統(tǒng)中做TXT記錄解析時(shí),,主機(jī)記錄請(qǐng)?zhí)顚?xiě) TXT 記錄,。
舉例如下:
申請(qǐng)域名:*.example.com,example.com
驗(yàn)證域名:example.com
TXT 記錄:_acme-challenge
記錄值:B3RilJdkKeF2qli003H_VfhYAwfryLPeQp_HMwKVYLY
驗(yàn)證域名:example.com
TXT 記錄:_acme-challenge
記錄值:sdcV9EGX2sTl4zZHBA8w7Oa1i-si2fnjQsjdLLMYGzg

場(chǎng)景二(Let's Encrypt 多域名 DNS 驗(yàn)證)
在DNS系統(tǒng)中做TXT記錄解析時(shí),主機(jī)記錄請(qǐng)?zhí)顚?xiě) TXT 記錄,。
舉例如下:
驗(yàn)證域名:a.example.com
TXT 記錄:_acme-challenge.a
記錄值:ncKkBE6OMzFXShQ-Hub4E9bef0QRWrasNhVZ7ucrqW4
驗(yàn)證域名:b.example.com
TXT 記錄:_acme-challenge.b
記錄值:edy3wry7XNSXVbN1ij-jkE6-JuWbruKpuV_cXgTSzIc

溫馨提示
TXT 記錄的 DNS 解析指向記錄值操作完成后,,系統(tǒng)會(huì)循環(huán)自動(dòng)檢測(cè)驗(yàn)證,最長(zhǎng)不超過(guò)24小時(shí),,您可以通過(guò)點(diǎn)擊配置完成,檢測(cè)一下DNS解析是否配置成功,,如圖

如圖所示為配置成功,可進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后,,證書(shū)就簽發(fā)下來(lái)了。


Let's Encrypt 證書(shū)文件驗(yàn)證指南
舉例:
待驗(yàn)證域名: ① a.example.com,,② b.example.com
驗(yàn)證文件路徑①: a.example.com/.well-known/acme-challenge/B7hqNaYOrctSepuh5lEkxGr-gJHmydZ_O9Bs_oN15mc
文本內(nèi)容:B7hqNaYOrctSepuh5lEkxGr-gJHmydZ_O9Bs_oN15mc.DPXSBrKYR2kD0PbpLqRfgtsq3LsvjT6CV13Hrwd0GRA
驗(yàn)證文件路徑②:
b.example.com/.well-known/acme-challenge/B7hqNaYOrctSepuh5lEkxGr-gJHmydZ_O9Bs_oN15mc
文本內(nèi)容:IL0yS325J7jn38oYgapP50T-KyJECGnKHiqeQlNwopw.DPXSBrKYR2kD0PbpLqRfgtsq3LsvjT6CV13Hrwd0GRA
需達(dá)到效果:
訪問(wèn):a.example.com/.well-known/acme-challenge/B7hqNaYOrctSepuh5lEkxGr-gJHmydZ_O9Bs_oN15mc ,,
獲取到文本內(nèi)容:B7hqNaYOrctSepuh5lEkxGr-gJHmydZ_O9Bs_oN15mc.DPXSBrKYR2kD0PbpLqRfgtsq3LsvjT6CV13Hrwd0GRA
訪問(wèn):b.example.com/.well-known/acme-challenge/B7hqNaYOrctSepuh5lEkxGr-gJHmydZ_O9Bs_oN15mc ,
獲取到文本內(nèi)容:IL0yS325J7jn38oYgapP50T-KyJECGnKHiqeQlNwopw.DPXSBrKYR2kD0PbpLqRfgtsq3LsvjT6CV13Hrwd0GRA
注意:如果DNS驗(yàn)證中txt記錄與cname記錄沖突導(dǎo)致無(wú)法驗(yàn)證成功,,可重新申請(qǐng)訂單更換為文件驗(yàn)證的方式,。
在之前的博文中小編也分享過(guò)幾篇關(guān)于SSL部署的過(guò)程,我自己也搞的暈乎暈乎的,,獲取證書(shū)和布局還是比較復(fù)雜的,,Let's Encrypt肯定是考慮到推廣HTTPS的普及型會(huì)讓用戶簡(jiǎn)單的獲取和部署SSL證書(shū),所以可以采用下面簡(jiǎn)單的一鍵部署獲取證書(shū),。
PS:在獲取某個(gè)站點(diǎn)證書(shū)文件的時(shí)候,,我們需要在安裝PYTHON2.7以及GIT,更需要將域名解析到當(dāng)前VPS主機(jī)IP中,。
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./certbot-auto --help all
./certbot-auto certonly --standalone --email [email protected] -d example.com -d www.example.com
注意:這里的命令中作者原來(lái)的是letsencrypt-auto,,但是我看readme中是certbot-auto所以就改過(guò)來(lái)了,使用的兄弟可以測(cè)試測(cè)試;
另外就是80端口的問(wèn)題,,如果本地被占用了,,可以暫時(shí)停下再整,下面也有相關(guān)說(shuō)明
然后執(zhí)行上面的腳本,,我們需要根據(jù)自己的實(shí)際站點(diǎn)情況將域名更換成自己需要部署的,。
目前根據(jù)大家的反饋以及小編的測(cè)試,,如果域名是用的國(guó)內(nèi)DNS,包括第三那方DNSPOD等,,都可能獲取不到域名信息,。
這里我們可以看到有"The server could not connect to the client to verify the domain"的錯(cuò)誤提示信息,包括也有其他提示錯(cuò)誤,,"The server experienced an internal error :: Error creating new registration"我們?cè)卩]局的時(shí)候不要用國(guó)內(nèi)免費(fèi)郵局,。所以,如果我們是海外域名就直接先用域名自帶的DNS,。
第三,、Let's Encrypt免費(fèi)SSL證書(shū)獲取與應(yīng)用
在完成Let's Encrypt證書(shū)的生成之后,我們會(huì)在"/etc/letsencrypt/live/example.com/"域名目錄下有4個(gè)文件就是生成的密鑰證書(shū)文件,。
cert.pem - Apache服務(wù)器端證書(shū)
chain.pem - Apache根證書(shū)和中繼證書(shū)
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全證書(shū)KEY文件
如果我們使用的Nginx環(huán)境,,那就需要用到fullchain.pem和privkey.pem兩個(gè)證書(shū)文件,在部署Nginx的時(shí)候需要用到(參考:LNMP一鍵包環(huán)境安裝SSL安全證書(shū)且部署HTTPS網(wǎng)站URL過(guò)程),。在這篇文章中就不詳細(xì)演示Let's Encrypt證書(shū)證書(shū)的安裝,,后面再重新折騰一篇文章詳細(xì)的部署證書(shū)的安裝Nginx和Apache。
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
比如我們?cè)贜ginx環(huán)境中,,只要將對(duì)應(yīng)的ssl_certificate和ssl_certificate_key路徑設(shè)置成我們生成的2個(gè)文件就可以,,最好不要移動(dòng)和復(fù)制文件,因?yàn)槔m(xù)期的時(shí)候直接續(xù)期生成的目錄文件就可以,,不需要再手工復(fù)制,。
第四、解決Let's Encrypt免費(fèi)SSL證書(shū)有效期問(wèn)題
我們從生成的文件中可以看到,,Let's Encrypt證書(shū)是有效期90天的,,需要我們自己手工更新續(xù)期才可以。
./certbot-auto certonly --renew-by-default --email [email protected] -d example.com -d www.example.com
這樣我們?cè)?0天內(nèi)再去執(zhí)行一次就可以解決續(xù)期問(wèn)題,,這樣又可以繼續(xù)使用90天,。如果我們怕忘記的話也可以制作成定時(shí)執(zhí)行任務(wù),比如每個(gè)月執(zhí)行一次,。
第五,、關(guān)于Let's Encrypt免費(fèi)SSL證書(shū)總結(jié)
通過(guò)以上幾個(gè)步驟的學(xué)習(xí)和應(yīng)用,我們肯定學(xué)會(huì)了利用Let's Encrypt免費(fèi)生成和獲取SSL證書(shū)文件,,隨著Let's Encrypt的應(yīng)用普及,,SSL以后直接免費(fèi)不需要購(gòu)買,因?yàn)榇蟛糠种髁鳛g覽器都支持且有更多的主流商家的支持和贊助,,HTTPS以后看來(lái)也是趨勢(shì),。在Let's Encrypt執(zhí)行過(guò)程在中我們需要解決幾個(gè)問(wèn)題。
A - 域名DNS和解析問(wèn)題,。在配置Let's Encrypt免費(fèi)SSL證書(shū)的時(shí)候域名一定要解析到當(dāng)前VPS服務(wù)器,,而且DNS必須用到海外域名DNS,,如果用國(guó)內(nèi)免費(fèi)DNS可能會(huì)導(dǎo)致獲取不到錯(cuò)誤。
B - 安裝Let's Encrypt部署之前需要服務(wù)器支持PYTHON2.7以及GIT環(huán)境,,要不無(wú)法部署,。
C - Let's Encrypt默認(rèn)是90天免費(fèi),需要手工或者自動(dòng)續(xù)期才可以繼續(xù)使用,。