輕鬆全站 HTTPS,還沒用上 https (可申請泛域名證書)的朋友可以操練起來了
前言
注意:上 HTTPS 超級簡單,寫這麼多,只是因為過程比較有趣,就多哆嗦了幾句
有了自己的部落格:《極簡部落格搭建,搭建超級簡單又好看》
有了自己的圖片處理服務:《搭建自己的圖片處理服務 — 智慧裁剪、旋轉、佔位一站搞定》
都已經這麼完美了,為什麼還會有這篇文章呢?是對社會有什麼不滿意嗎?
為什麼要上 HTTPS
**安全:**你與使用者之間的訊息加密傳輸,防止中間人攻擊(就是我遇到的問題)
**其它優點:**當你在國內使用域名時,需要備案。有時你想測試一下你的站,用上未備案的域名,怎麼辦呢?https 可以幫你暫時繞過阿里雲彈的未備案頁(強烈建議去備案你的域名,一來你應當守法,二來未備案國內 cdn、網站收錄什麼的都需要備案的域名
因果
前些天剛搭了個漂亮的小部落格,寫了幾篇小日記還沒有修改成小說。可以說非常開心了,於是今天早早洗完澡準備在床上用手機體驗下網站自適應的效果。開啟微信,掃了下自己站的二維碼,順勢躺在床上。劃~劃~劃,突然底部跳出一個廣告,咦?什麼情況?我什麼時候投的廣告??這部落格不會這麼坑吧?竟然自帶廣告。
不行,得起來擼程式碼了。帶著懊惱的心情,我又回到了電腦前,開始檢查部落格的原始碼,看看具體哪裡出了這個問題。看了一遍,沒有問題。突然想到,這可能是被運營商劫持了。那沒辦法了,只能連夜上個 HTTPS 了。
沒有伺服器? 來參加阿里雲雙 11 底價團,12 號前 99.5/臺起!
準備
- 域名(自備)
- acme.sh
acme.sh 是一個自動申請 https 證書的指令碼,使用方便,功能也非常強大。
安裝:
curl https://get.acme.sh | sh
或者
wget -O - https://get.acme.sh | sh
這樣你已經把 acme.sh 這個小工具安裝到你本地的~/.acme.sh/
中了,而不會在你係統的其它地方裝些亂七八糟的東西。
極速開始
不是阿里的朋友,可以嘗試下面的常規路線
阿里雲購買域名的朋友可以走這個極速通道,因為阿里雲有介面可以直接操作域名控制檯,這個介面已經被整合到了 acme.sh
-
在你的命令列中執行如下命令:
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
是我的域名,這裡需要換成你的。
引數解釋:
acme.sh :表示使用你剛安裝好的acme.sh
–issue :申請證書
–dns dns_ali:使用阿里雲的 dns 服務,在阿里雲買的域名,在沒有修改預設 dns 的前提下,都可以使用這個引數來申請 https 證書。
-d 2td.cc:-d
表示 domain,後面跟你要申請域名。
-d ‘*.2td.cc’:這裡的-d 與上方一樣,-d 引數可以帶多個,這裡的'*.2td.cc'
中的 * 表示泛域名,只要申請了這個證書像(www.2td.cc,mail.2td.cc,h5.2td.cc …)這類的二級域名都可以使用此證書來實現 https。注意2td.cc
這個域名不在這條規則裡,所以上面又加了一條-d 2td.cc
,這樣你的主域名、二級子域名均可以使用此證書。 -
等待執行完成,期間會有 120 秒的倒計時,結束後如果顯示成功,則證書申請成功。
- 應用到 nginx
修改你 nginx 的配置,配置 https
server {
listen 443 ssl;
# 有了 https 可以嘗試開啟 http2,加速你的網站
# 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;
# 下面寫你之前的配置
}
常規路線
一些 DNS 服務商,沒有提供 API 操作 DNS 的介面,所以整合不進這個工具裡。當然我們也還是可以申請證書。
這種方式的好處是, 你不需要任何伺服器, 不需要任何公網 ip, 只需要 dns 的解析記錄即可完成驗證. 壞處是,如果不同時配置 Automatic DNS API,使用這種方式 acme.sh 將無法自動更新證書,每次都需要手動再次重新解析驗證域名所有權。
-
申請證書
acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please
aiwdh.cn
是我的域名,這裡需要換成你的。
引數解釋:
acme.sh :表示使用你剛安裝好的acme.sh
–issue :申請證書
–dns:使用 DNS 的方式來驗證你的所有權,你需要在域名上新增一條 txt 解析記錄, 驗證域名所有權。
-d aiwdh.cn:-d
表示 domain,後面跟你要申請域名。
–yes-I-know-dns-manual-mode-enough-go-ahead-please:官方不推薦使用此方式來生成證書,所以有這個額外的引數來提醒你你在做什麼。
-
新增 txt 記錄
-
加好記錄後,重新申請證書
acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew
-
應用到 nginx
修改你 nginx 的配置,配置 https
server {
listen 443 ssl;
# 有了 https 可以嘗試開啟 http2,加速你的網站
# 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;
# 下面寫你之前的配置
}
- 這種方式新增的證書,每當證書快過期,需要重新走一下這些步驟,稍微麻煩一點。
結語
如果用極速申請的方式,很快就可以實現全站 https 了。當然第二種方式來申請證書你都不需要在自己的伺服器上作操作,你可以在本地完成申請,把證書拿到各個地方去用。
終於用上了 https, 再也沒有多餘的廣告在我手機上顯示了,開心。申請速度倒是很快,整理不易,且行且珍惜。
還沒伺服器域名? 來參加阿里雲雙 11 底價團,12 號前 99.5/臺起!