輕鬆全站 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.cc,mail.2td.cc,h5.2td.cc ...)這類的二級域名都可以使用此證書來實現 https。注意 2td.cc這個域名不在這條規則裏,所以上面又加了一條-d 2td.cc,這樣你的主域名、二級子域名均可以使用此證書。

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

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

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

結語

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章