前言
注意:上 HTTPS 超級簡單,寫這么多脓钾,只是因?yàn)檫^程比較有趣售睹,就多哆嗦了幾句
有了自己的博客:《極簡博客搭建,搭建超級簡單又好看》
有了自己的圖片處理服務(wù):《搭建自己的圖片處理服務(wù) — 智能裁剪惭笑、旋轉(zhuǎn)侣姆、占位一站搞定》
都已經(jīng)這么完美了,為什么還會有這篇文章呢沉噩?是對社會有什么不滿意嗎捺宗?
為什么要上 HTTPS
安全:你與用戶之間的消息加密傳輸,防止中間人攻擊(就是我遇到的問題)
其它優(yōu)點(diǎn):當(dāng)你在國內(nèi)使用域名時川蒙,需要備案蚜厉。有時你想測試一下你的站,用上未備案的域名畜眨,怎么辦呢昼牛?https 可以幫你暫時繞過阿里云彈的未備案頁(強(qiáng)烈建議去備案你的域名,一來你應(yīng)當(dāng)守法康聂,二來未備案國內(nèi) cdn贰健、網(wǎng)站收錄什么的都需要備案的域名),其它暫時沒想到有什么優(yōu)點(diǎn)恬汁。
因果
前些天剛搭了個漂亮的小博客伶椿,寫了幾篇小日記還沒有修改成小說。可以說非常開心了脊另,于是今天早早洗完澡準(zhǔn)備在床上用手機(jī)體驗(yàn)下網(wǎng)站自適應(yīng)的效果导狡。打開微信,掃了下自己站的二維碼偎痛,順勢躺在床上旱捧。劃~劃~劃,突然底部跳出一個廣告踩麦,咦枚赡?什么情況?我什么時候投的廣告靖榕?标锄?這博客不會這么坑吧?竟然自帶廣告茁计。
不行料皇,得起來擼代碼了。帶著懊惱的心情星压,我又回到了電腦前践剂,開始檢查博客的源碼,看看具體哪里出了這個問題娜膘⊙犯看了一遍,沒有問題竣贪。突然想到军洼,這可能是被運(yùn)營商劫持了。那沒辦法了演怎,只能連夜上個 HTTPS 了匕争。
還沒有服務(wù)器?快領(lǐng)取一張高額優(yōu)惠券
準(zhǔn)備
- 域名(自備)
-
acme.sh
acme.sh 是一個自動申請 https 證書的腳本爷耀,使用方便甘桑,功能也非常強(qiáng)大。
安裝:
curl https://get.acme.sh | sh
或者
wget -O - https://get.acme.sh | sh
這樣你已經(jīng)把 acme.sh 這個小工具安裝到你本地的~/.acme.sh/
中了歹叮,而不會在你系統(tǒng)的其它地方裝些亂七八糟的東西跑杭。
極速開始
不是阿里的朋友,可以嘗試下面的常規(guī)路線
阿里云購買域名的朋友可以走這個極速通道咆耿,因?yàn)榘⒗镌朴薪涌诳梢灾苯硬僮饔蛎刂婆_德谅,這個接口已經(jīng)被整合到了 acme.sh
這個工具里面。只要設(shè)置一下 Ali_Key 和 Ali_Secret萨螺, 從哪里獲得窄做?
在你的命令行中執(zhí)行如下命令:
export Ali_Key="換成你的 AccessKey ID"
export Ali_Secret="換成你的 Access Key Secret"
開始申請證書
acme.sh --issue --dns dns_ali -d 2td.cc -d '*.2td.cc'
2td.cc
是我的域名宅荤,這里需要換成你的。
參數(shù)解釋:
acme.sh :表示使用你剛安裝好的acme.sh
--issue :申請證書
--dns dns_ali:使用阿里云的 dns 服務(wù)浸策,在阿里云買的域名,在沒有修改默認(rèn) dns 的前提下惹盼,都可以使用這個參數(shù)來申請 https 證書庸汗。
-d 2td.cc:-d
表示 domain,后面跟你要申請域名手报。
-d '*.2td.cc':這里的-d 與上方一樣蚯舱,-d 參數(shù)可以帶多個,這里的'*.2td.cc'
中的 * 表示泛域名掩蛤,只要申請了這個證書像(www.2td.cc枉昏,mail.2td.cc,h5.2td.cc ...)這類的二級域名都可以使用此證書來實(shí)現(xiàn) https揍鸟。注意2td.cc
這個域名不在這條規(guī)則里兄裂,所以上面又加了一條-d 2td.cc
,這樣你的主域名阳藻、二級子域名均可以使用此證書晰奖。等待執(zhí)行完成,期間會有 120 秒的倒計(jì)時腥泥,結(jié)束后如果顯示成功匾南,則證書申請成功。
- 應(yīng)用到 nginx
修改你 nginx 的配置蛔外,配置 https
server {
listen 443 ssl;
# 有了 https 可以嘗試開啟 http2蛆楞,加速你的網(wǎng)站
# http2 需要你 nginx 加載了 http2 模塊,用如下配置開啟夹厌。
# listen 443 ssl http2;
server_name 2td.cc;
ssl_certificate /root/.acme.sh/2td.cc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/2td.cc/2td.cc.key;
# charset koi8-r;
access_log /var/log/nginx/host.access.log main;
# 下面寫你之前的配置
}
常規(guī)路線
一些 DNS 服務(wù)商豹爹,沒有提供 API 操作 DNS 的接口,所以整合不進(jìn)這個工具里尊流。當(dāng)然我們也還是可以申請證書帅戒。
這種方式的好處是, 你不需要任何服務(wù)器, 不需要任何公網(wǎng) ip, 只需要 dns 的解析記錄即可完成驗(yàn)證. 壞處是,如果不同時配置 Automatic DNS API崖技,使用這種方式 acme.sh 將無法自動更新證書逻住,每次都需要手動再次重新解析驗(yàn)證域名所有權(quán)。
- 申請證書
acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please
aiwdh.cn
是我的域名迎献,這里需要換成你的瞎访。
參數(shù)解釋:
acme.sh :表示使用你剛安裝好的acme.sh
--issue :申請證書
--dns:使用 DNS 的方式來驗(yàn)證你的所有權(quán),你需要在域名上添加一條 txt 解析記錄, 驗(yàn)證域名所有權(quán)吁恍。
-d aiwdh.cn:-d
表示 domain扒秸,后面跟你要申請域名播演。
--yes-I-know-dns-manual-mode-enough-go-ahead-please:官方不推薦使用此方式來生成證書,所以有這個額外的參數(shù)來提醒你你在做什么伴奥。
-
添加 txt 記錄
-
加好記錄后写烤,重新申請證書
acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew
應(yīng)用到 nginx
修改你 nginx 的配置,配置 https
server {
listen 443 ssl;
# 有了 https 可以嘗試開啟 http2拾徙,加速你的網(wǎng)站
# http2 需要你 nginx 加載了 http2 模塊洲炊,用如下配置開啟。
# listen 443 ssl http2;
server_name aiwdh.cn;
ssl_certificate /root/.acme.sh/aiwdh.cn/fullchain.cer;
ssl_certificate_key /root/.acme.sh/aiwdh.cn/aiwdh.cn.key;
# charset koi8-r;
access_log /var/log/nginx/host.access.log main;
# 下面寫你之前的配置
}
- 這種方式添加的證書尼啡,每當(dāng)證書快過期暂衡,需要重新走一下這些步驟,稍微麻煩一點(diǎn)崖瞭。
結(jié)語
如果用極速申請的方式狂巢,很快就可以實(shí)現(xiàn)全站 https 了。當(dāng)然第二種方式來申請證書你都不需要在自己的服務(wù)器上作操作书聚,你可以在本地完成申請唧领,把證書拿到各個地方去用。
終于用上了 https, 再也沒有多余的廣告在我手機(jī)上顯示了雌续,開心疹吃。申請速度倒是很快,整理不易西雀,且行且珍惜萨驶。
還沒有服務(wù)器?快領(lǐng)取一張高額優(yōu)惠券