HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標(biāo)的 HTTP 通道,在HTTP的基礎(chǔ)上通過傳輸加密和身份認(rèn)證保證了傳輸過程的安全性,而如果我們直接使用HTTP來架設(shè)自己的網(wǎng)站的話是并不安全的。
Let's Encrypt可以提供免費(fèi)的證書,如果能通過Let's Encrypt + 阿里云DNS來驗(yàn)證域名,那個(gè)樣可以實(shí)現(xiàn)自動(dòng)簽發(fā)證書了。Let's Encrypt連接阿里云可以使用官方提供的api工具。
配置阿里云
1.首先在阿里云域名管理頁面解析一個(gè)域名,記住你的A記錄的值,比如我這里解析了一個(gè)域名test.aoarasi.com到我的云服務(wù)器。

2.在登錄的阿里云賬戶頭像處找到AccessKey管理,然后點(diǎn)擊創(chuàng)建AccessKey。


創(chuàng)建時(shí)需要驗(yàn)證一下手機(jī)號(hào),之后就能成功生成,我們把AccessKey保存到本地或下載csv文件(千萬注意不要隨意泄露?。?。

搭建Let's Encrypt
這里假設(shè)你已經(jīng)安裝好docker環(huán)境,使用以下命令,拉取Let's Encrypt鏡像到本地并運(yùn)行
docker run \
-itd \
--cap-add=NET_ADMIN \
--name=letsencrypt \
--net=host \
-v /opt/docker/letsencrypt/:/config:rw \
-e PGID=1000 \
-e PUID=1000 \
-e EMAIL=aoarasi@88.com \
-e URL=aoarasi.com \
-e SUBDOMAINS=test \
-e ONLY_SUBDOMAINS=true \
-e DHLEVEL=2048 \
-e VALIDATION=dns \
-e DNSPLUGIN=aliyun \
-p 80:80/tcp \
-p 443:443/tcp \
-e TZ=Asia/Shanghai \
linuxserver/letsencrypt
這個(gè)命令需要主要修改以下幾個(gè)地方,其它未提及到的參數(shù)自行對(duì)應(yīng)修改。
-e EMAIL=aoarasi@88.com #這里修改為自己的郵件地址
-e URL=aoarasi.com #這里修改為自己的頂級(jí)域名
SUBDOMAINS=test #這里修改為二級(jí)域名的前綴,比如我前面解析的a記錄為test
-p 80:80/tcp #這里根據(jù)情況修改,:前是主機(jī)端口,后面為映射容器端口
-p 443:443/tcp #同上
修改完后,拷貝上面的代碼運(yùn)行。注意確保你所設(shè)置的端口沒有被其它程序占用。


修改阿里aliyun.ini文件,將文件中的access_key和secret為之前我保存的。
[root@mx dns-conf]# vim /opt/docker/letsencrypt/dns-conf/aliyun.ini

修改完后,我們重啟一下letsencrypt應(yīng)用,使配置生效。
docker restart letsencrypt
# 查看啟動(dòng)情況
docker logs -f letsencrypt
直到日志顯示server ready時(shí),表示已經(jīng)成功的申請(qǐng)到了證書,這時(shí)使用ctrl+c組合鍵退出。

訪問
使用我們前面解析的域名test.aoarasi.com來訪問測(cè)試,發(fā)現(xiàn)已經(jīng)正常使用https解析了。

查看證書詳情,默認(rèn)給我們?nèi)齻€(gè)月的有效期。

至此!
下期我們將分析如何使用Let's Encrypt來反向代理其它應(yīng)用和使用自動(dòng)續(xù)期功能,歡迎關(guān)注!