前一陣子又把我的網域 frdm.info 上線。 [不過這個網域是我的玩具, 何時會下線或改名我也不知道。 若要把我的某些網頁加入書籤, 請大家還是要用 frdm.cyut.edu.tw <== 這部學校的伺服器比較可能長久存在。] 這次試玩 wildcard dns。 大家可以試看看 abc.frdm.info 或 隨便.frdm.info , 出現的訊息是 (網頁) "Not Found" 而不是 「找不到這個網站」。
首先在 pchome (我的 dns provider) 裡面設好兩筆 A 記錄, 一筆是 frdm.info 本身的, 另一筆是 *.frdm.info 的。
再用 certbot 同時幫 frdm.info 及 *.frdm.info
申請 HTTPS/TLS/SSL 憑證:
certbot certonly --manual --preferred-challenges=dns --agree-tos -d frdm.info -d '*.frdm.info'
它會要求你在 DNS 裡面加一筆 TXT 記錄,
裡面填上它指定的一串看似亂碼的字串,
以證明你對這個網域擁有修改權。
三個月前我首次申請時, 進 pchome 改好、 等幾分鐘, 再回到 certbot 按 Enter, 就一切順利完成了。 不過這兩天被要求更新憑證時, 變得很麻煩。 不確定到底發生了什麼事, 趕快先筆記一下。 總之以下是遇到的問題及解決方式:
- certbot 可能會要求你設定兩組 TXT, 然後一口氣驗證這兩組。
- 如果驗證失敗, 重新執行時, 它給的 challenge 亂碼又會改變。
- 這次 dns 修改之後的傳播速度很慢, 可能要等一兩個小時。
- 如果有舊的 TXT 記錄, certbot 有可能會查到舊的, 結果就失敗。
所以呢:
- 請先執行一次, 不急著改 dns 設定, 直接按 Enter, 確認它到底要 challenge 一組還是同時兩組 TXT 字串。 (然後這一次當然失敗, TXT 字串當然就報銷啦。)
- 進到 pchome, 把所有舊的 _acme-challenge 的 TXT 通通刪除, 避免干擾之後的驗證。
- 開另一個終端機分頁, (因為要跟 certbot 使用相同的 dns server
查詢, 所以要) 在同一部伺服器上 執行:
dig -t txt _acme-challenge.frdm.info | grep _acme-challenge
確認看不到上次殘留的 txt 記錄。 如果還看得到, 就再等幾小時再往下做。 - 重新執行
certbot ...
, 在最後一次 "Press Enter to Continue" 出現時, 先讓它懸在那邊, 先進 pchome 設定 (一組或同時兩組) txt 記錄。 - 切換回 dig 分頁、 重複執行。 如果還沒看到新的 txt 記錄, 就先去做別的事。
- 等 dig 分頁出現新的 txt 記錄, 再回到 certbot 分頁按 Enter。
- 成功之後, 回 pchome 把 txt 記錄刪掉。 [certbot 印出來的完整訊息太長了, 請本頁面原始碼的註解。]
順利版的筆記請見 超猴崽工作日誌; 好幾位 cert-manager 的用戶 跟我有相同的問題, 沒人要理他們; 搜尋 「"_acme-challenge" delay」 找到 這個相同的 issue, 看不太懂, 先筆記。 根據 gandi.net 的報價, 基本款 ("標準") 的 "萬用字元" SSL 憑證, 每年 $6300。 省錢爽耶!
有了憑證, 當然也要啟用 ssl: a2enmod ssl
再來要設定: 每個 VirtualHost 有自己的 VirtualDocumentRoot 。 根據 這則解答, 我的 apache2 設定檔裡加了這一段:
<VirtualHost _default_:443> ServerAlias *.frdm.info ServerAdmin ckhung@cyut.edu.tw VirtualDocumentRoot /var/www/%1/ SSLEngine on SSLCertificateFile /etc/letsencrypt/live/frdm.info/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/frdm.info/privkey.pem ... </VirtualHost>
如此一來, 訪客造訪 https://scatplot.frdm.info 時, apache 就會拿 /var/www/scatplot/index.html 給他看; 造訪 https://potluckmap.frdm.info/ 時, apache 就會拿 /var/www/potluckmap/index.html 給他看。 只差幾個 mv 指令, 我一下子變成坐擁多站的站長 :-)
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。