1. 程式人生 > >輕鬆全站 HTTPS,還沒用上 https (可申請泛域名證書)的朋友可以操練起來了

輕鬆全站 HTTPS,還沒用上 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

這個工具裡面。只要設定一下 Ali_Key 和 Ali_Secret, 從哪裡獲得?

  1. 在你的命令列中執行如下命令:
    export Ali_Key="換成你的 AccessKey ID"
    export Ali_Secret="換成你的 Access Key Secret"

  2. 開始申請證書
    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.ccmail.2td.cch5.2td.cc …)這類的二級域名都可以使用此證書來實現 https。注意 2td.cc這個域名不在這條規則裡,所以上面又加了一條-d 2td.cc,這樣你的主域名、二級子域名均可以使用此證書。

  3. 等待執行完成,期間會有 120 秒的倒計時,結束後如果顯示成功,則證書申請成功。

申請中...
申請完成
申請好的證書路徑

  1. 應用到 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 將無法自動更新證書,每次都需要手動再次重新解析驗證域名所有權。

  1. 申請證書
    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:官方不推薦使用此方式來生成證書,所以有這個額外的引數來提醒你你在做什麼。
    申請證書

  2. 新增 txt 記錄
    新增 txt 記錄

  3. 加好記錄後,重新申請證書
    acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew
    重新申請證書
    申請好的證書路徑

  4. 應用到 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;
    
    # 下面寫你之前的配置
}
  1. 這種方式新增的證書,每當證書快過期,需要重新走一下這些步驟,稍微麻煩一點。

結語

如果用極速申請的方式,很快就可以實現全站 https 了。當然第二種方式來申請證書你都不需要在自己的伺服器上作操作,你可以在本地完成申請,把證書拿到各個地方去用。

終於用上了 https, 再也沒有多餘的廣告在我手機上顯示了,開心。申請速度倒是很快,整理不易,且行且珍惜。
還沒伺服器域名? 來參加阿里雲雙 11 底價團,12 號前 99.5/臺起!