原由
去年台灣疫情大爆發時, “獅子王” “茶裡王” 四處橫行, 搞的一堆人只好WFH和遠距上課, 於此同時, 我家的WiFi5分享器似乎也不怎麽給力, 而且家裏同時有兩三人在搶頻寬, 還好此時的WiFi6已經日趨普及了, 於是便換了一台TP-Link AX50, 走中華電信浮動IP, 而分享器製造上商也有提供動態域名的服務(DDNS, Dynamic Domain Name Service)。人在網路江湖行走, 不免要有個稱號, 好讓人家容易記住, 好讓自己知道有人在叫咱的名字。於是就給自己註冊了 “rurupapa.tplinkdns.com” 這個網域名稱。為了以後可以開站行走網際網路不會被視為不安全的網站, 為了證明個人網站 “身家清白”, 不是什麽詐欺犯通緝犯什麼阿貓阿狗的, 所以需要有人做保, 需要具有公證力的單位來做保開立憑證。俗語說 “人呆才做保”, 尤其是對那一些從網路的石頭縫裡冒出來的網站, 有誰敢保!? 其實, 網路上還不至於這麽無情, 底下會來敘說如何請網際網路公證單位做保開立憑証
先架好簡單的網頁伺服器
個人是用樹梅派架設nginx網頁服務器, 網頁的根在 /var/www/html, 只放一個測試網頁 index.html, nginx 設置都是用預設, 先開 port 80, 設置如下

架設過程這裡不多做說明, 測試簡單連線 (先從分享器的內網測試網站架設是否成功), 如下

啟動分享器的動態域名

個人在tplinkdns已經註冊了 “rurupapa.tplinkdns.com” 這個網域名稱了. 此外, 也在NO-IP註冊了 “rurupapa.ddns.net” 網域名稱, 底下以 “rurupapa.ddns.net” 為例進行說明. 首先, 在nginx新增 “虛擬服務器” 來服務這一個新增的動態域名
在 /etc/nginx/sites-available 新增一個檔案 “rurupapa.ddns.net” (通常用網域名稱稱來當作檔案名子, 好記好區隔好管理), 可以從 default 複製過來, 如下
pi@raspberrypi:~ $ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/rurupapa.ddns.net
兩個重要修改:
server_name : rurupapa.ddns.net root : /var/www/rurupapa.ddns.net
對nginx網頁服務器而言, 它可以在同一台機器虛擬出多個網站, 站名基本上就是申請的網路域名, 每一個網頁網站都會有網頁的根目錄, 為了好區別和管理,網頁網站根目錄的名稱就使用網域名稱即可(例如 “rurupapa.ddns.net” ), 設置如下

複製一些基本資料, 以便進行驗證測試
pi@raspberrypi:~ $ sudo mkdir -p /var/www/rurupapa.ddns.net pi@raspberrypi:~ $ sudo cp /var/www/html/index.html /var/www/rurupapa.ddns.net/
啟動新增的虛擬網站服務
pi@raspberrypi:~ $ sudo ln -s /etc/nginx/sites-available/rurupapa.ddns.net /etc/nginx/sites-enabled/ pi@raspberrypi:~ $ sudo nginx -t pi@raspberrypi:~ $ sudo systemctl reload nginx
分享器要開啟虛擬伺服器
要進行網際網路連線之前, 還有一個動作要做, 就是在分享器挖個門(洞), 好讓外網可以訪問到分享器內網樹梅派上的網頁服務, 如下圖

測試外網(網際網路)連線, 在電腦上使用chrome連線 http://rurupapa.ddns.net
![]() |
接著, 啟動加密連線(port 443), 修改設置如下
![]() |
檢查nginx設置的修改是否有誤, 然後重啟 nginx
pi@raspberrypi:~ $ sudo nginx -t pi@raspberrypi:~ $ sudo systemctl reload
使用chrome連線 https://rurupapa.ddns.net
![]() |
雖然有加密, 但是沒有憑證, chrome 瀏覽器會提示不安全
最後, 啟動憑證, 修改設置如下

檢查修改, 重啟 nginx
pi@raspberrypi:~ $ sudo nginx -t pi@raspberrypi:~ $ sudo systemctl reload
在電腦上再次使用chrome連線 https://rurupapa.ddns.net
![]() |
現在chrome瀏覽器認為這個網站沒問題了, 會標示鎖頭. 如何申請憑證, 底下會說
向公證單位進行憑證申請
點擊 https://app.zerossl.com/dashboard (這裡有提供免費的憑證) 進行申請
如果還沒有帳號的話, 就先申請一個, 接著用帳號登入開始申請, 過程如下
- 申請帳號
![]() |
- 填寫個人想要的帳號資料

- 開始申請憑證

- 填寫想申請的域名
除了 “rurupapa.tplinkddns.com” 之外, 我也使用 “NO-IP”申請了 “rurupapa.ddns.net” 網域名稱, 底下以 “rurupapa.ddns.net” 為例子

免費的, 有效期90天

CSR 是Certificate Signing Request 的縮寫, 對初體驗的人, 這裡選擇自動產出

如果不怕麻煩的話, 就把個人相關資料填一填

底下是簽發憑證的促銷, 初體驗選擇免費即可

底下是簽發和驗證的方法, 因為個人架設的是 nginx, 目前設置還很簡單, 這裡選擇 HTTP upload方式, 其實就是把簽證單位給的雜湊檔案放網頁根目錄下特定位置, 讓簽證單位在網際網路能夠看得到, 這樣便能完成驗證, 證明 1. 申請的網站是活的, 2. 網頁裡的雜湊檔案確實簽證單位發出來的, 若是沒問題的話, 接這便製作憑證和私密鑰提供給申請者下載

下圖, 步驟1 :下載雜湊檔, 步驟2 : 在網頁根目錄下建立資料夾 “.well-known/pki-validation/”, 完成步驟 1和2之後, 點擊步驟3的網址, 網頁會出現一堆雜亂的文字和數字, 到這裡基本驗證應該沒問題了

- 下載雜湊檔案

- 上傳(複製)雜湊檔到 “樹梅派”
![「 ↓ を ↑ ↓ 下 日 文 件 ☆ ) 第 逵 存 取 ン wo 「 d 町 5 upload V 似 ub Au 引 0 し b Ⅳ 、 ・ 第 虹 優 用 遮 的 住 第 に 0 ) C ′ 0 を ミ ま 世 存 取 第 日 明 ~ 5 / 1 ヨ 下 こ 202 5 た 7 下 ! 2D245 / 19 下 こ 2014 / 9 / 24 よ ! 2022 / 421 下 こ ~ 000 々 / 16 上 と 200 1 7 下 : 2000 / 412 下 こ Ⅵ 色 物 SO 气 GO T0015 第 日 麟 畍 [ 司 , ロ ban - 「 - ] home [ コ 2 〔 me Sh 「 コ and 「 Oid す ロ け を ・ [ コ config , 「 コ gnupg [ コ 9 引 「 e 印 1 ト 010 す [ コ 」 oc 引 ・ 「 コ 0 cl 、 a す [ コ p 「 11 , 「 -1 0C5 引 3 つ 0 加 me/pi 「 一 重 hi 聞 爬 0 し 朝 ⅳ 目 を 「 50E4 こ 5 〕 第 を 64 ロ Xauthonty bash-history 「 457 「 - G' ) 0 ⅱ に に う ・ b2n50 凵 d : ー wo press-I 年 画 ン Yout AL" 」 iOLib ) ・ 0 ー 0 、 に - Personal ) ↓ 下 を ) 日 文 物 気 8054C5227664f487 ( 86722fC2 ( 石 A64 取 ー ・ 0-2 」 % 朝 101 僕 2500- h AX501 、 0- し G - VI 手 d ー ・ 1579H001 」 PG 260607 ] 美 被 田 三 加 う す 大 尸 既 0 2 [ ℃ 1H001 」 PG ロ .xsessior ト erors.old : ] し さ 0 um 郊 以 2 第 h wordpress-593zip 第 bashrc 嘗 ViminfO 第 記 t - it 。 「 第 rich-wprurupapa Vo 土 fl 2 ロ 22 年 05 月 引 日 2 77 389 可 1 鴒 2022 年 05 月 31 日 2 2022 年 05 月 31 日 1 48 雪 2 ロ 22 年 05 月 引 日 1 22 77 KiB 2022 年 05 月 31 日 1 2022 年 05 月 引 日 1 5 125 bytes 2022 年 05 月 20 日 : 19 3 Ⅵ 日 2022 年 05 月 23 日 2 2022 年 05 月 20 日 1 1 ℃ ま 5 Ki 日 2022 年 05 月 20 日 1 2022 年 05 月 20 日 1 1 1 .5 Kia 75 b 5 2022 年 05 月 20 日 1 5 田 bytes 2022 年 05 月 19 日 1 ロ 選 1 0 ニ 新](https://rurupapa.tplinkdns.com/wp-content/uploads/2022/06/wo-d-5-u.png)
- 在網頁根目錄建置特定位置,放入 “雜湊” 檔案
pi@raspberrypi:~ $sudo mkdir -p /var/www/rurupapa.ddns.net/.well-known/pki-validation/ pi@raspberrypi:~ $sudo mv 0F8064C5227B64E487C8B722EC206A64.txt /var/www/rurupapa.ddns.net/.well-known/pki-validation/
- 測試網頁能否顯示雜湊檔案 (http://rurupapa.ddns.net/.well-known/pki-validation/0F8064C5227B64E487C8B722EC206A64.txt)

- 進行驗證
開立憑證的單位也會透過這個網址 http://rurupapa.ddns.net/.well-known/pki-validation/0F8064C5227B64E487C8B722EC206A64.txt 進行連線, 查證這個雜湊是否是它所產出的

- 下載憑證


- 安裝憑證

下載到 C:\Users\RichHuang\Downloads\sslfree\, 檔名為 rurupapa.ddns.net.zip, 然後解壓縮
rurupapa.ddns.net ca_bundle.crt certificate.crt private.key
為了好記好管好區隔, 重新命名憑證和私密鑰
rurupapa.ddns.net.ca_bundle.crt rurupapa.ddns.net.certificate.crt rurupapa.ddns.net.private.key
此時, 為 nginx 網頁服務器新增一個料夾專責存放憑證, 然後把新申請的憑證和私密鑰上傳到樹梅派伺服器 /etc/nginx/ssl/ 位置, 修改 nginx 設置啟動憑證
pi@raspberrypi:~ $ sudo mkdir -p /etc/nginx/ssl/ pi@raspberrypi:~ $ sudo vim /etc/nginx/sites-available/rurupapa.ddns.net
新設定如下

驗證一下設置的修改是否有問題, 然後重啟 nginx
pi@raspberrypi:~ $ sudo nginx -t pi@raspberrypi:~ $ sudo systemctl reload nginx
用電腦的瀏覽器(chrome)測試連線一下 https://rurupapa.ddns.net

出現鎖頭, 表示有加密, 而且瀏覽器沒有彈出不安全網路的警示
用手機試一下 http://rurupapa.ddns.net

!警示符號, 未加密, 表示是不安全的網路, 一切來往訊息沒有加密, 容易被有心人竊聽
用手機試一下 https://rurupapa.ddns.net

出現鎖頭, 表示有加密, 而且瀏覽器沒有彈出不安全網路的警示, 基本上到這裡, 個人架設的網站在網際網路上應該算是具備 “良民” 身分了
參考
給你滿滿的樹莓派教學、實作與應用大平台
Raspberry Pi 的實作 – 用 Nginx 架設網頁伺服器
How to Install SSL Certificate on NGINX
免費的Domain與DDNS設定,一切交給No-Ip處理!
申請&設定SSL 靠Let’s Encrypt簡單搞定





