前言
注意:上 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
這個工具裏面。只要設置一下 Ali_Key 和 Ali_Secret, 從哪裏獲得?
-
在你的命令行中執行如下命令:
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 的配置,配置 httpsserver { 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 的配置,配置 httpsserver { 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/臺起!