台灣時間 7/9 晚上到 7/10 晚上,連到本站來的人可能會有連線不一定連得上的問題。這篇文章發出時應該已經解決了,放個一兩天看還有沒有什麼狀況吧。
事情是這樣的:7/7 一早我收到信說我這個域名 *.cruciferslab.net 的 wildcard HTTPS 憑證快過期了。想說我應該早在域名剛拿到那陣子就設好自動更新的 (對,看上面憑證可以看到我是用最容易拿到的 Let’s Encrypt 憑證,我收到的這信就是他們發給我的) 所以在上班前快速連進了放那個憑證的機器1看了一下狀況。
問題其實很簡單:我這個域名當初是從 Google Domains 註冊的,不過他們前陣子被 Squarespace 買下來了,所以設定就轉到了 Squarespace 上去。Wildcard 憑證會需要進行 DNS challenge 表示你真的是這個域名的擁有者;之前好像 Google Domain 的 DNS 還能用所以還能更新,但現在似乎不行了的樣子。於是自然想說看能不能在給 Squarespace 管的狀況下來做更新,但找了半天的結論是:Squarespace 似乎因為主力在網站建置的關係,把 HTTPS 憑證這回事給綁定在你要用他們家的建置網站裡,有的話就會自動幫你弄;要手動弄不是不行,但 DNS 他們限定在你只能用網頁介面進行更新,所以如果申請效期比較久憑證的話久久做一次是不會太麻煩,但 Let’s Encrypt 基本上是兩個月更新一次2,不給我自動化這實在很討厭……
然後找到了 reddit 上另一篇在 r/nginxproxymanager 的文章,該文章的原 PO 看起來跟我的狀況很類似,也是從 Google Domain 移到 Squarespace 然後在找方法自動設定憑證更新,不過看起來他在沒找到解決方法之下搬家到 Cloudflare 了。稍微研究了一下 Cloudflare 的設定,看起來只要把 DNS 給 Cloudflare 管理,就能用這個 plugin 設定自動更新憑證了,所以就決定這兩天把 DNS 搬進 Cloudflare 了。
開頭說的這段時間就是我把 Squarespace 的 DNS 設定解除 (主要是 DNSSEC),把 DNS 解析主機設定成 Cloudflare,等它傳播更新完成,再在 Cloudflare 這邊把 DNSSEC 開回來的時間。中間還因為在 Cloudflare 當中的設定讓站點吃了無限重導向迴圈……3 當然在那之後憑證更新就順利完成了。
不過這讓我在考慮一件事:Cloudflare 本身也是域名註冊商,既然 Squarespace 以網站建置為主,其他相關服務為輔,那我好像把網域註冊也搬進 Cloudflare 來能做的事會更多的樣子?(順便像現在這樣直接用他們的快取服務,這樣我不用煩一堆人一直來攻擊這裡……) 只是搬家好像一般要跟著展期一年,我這次續購還剩下半年有點不太確定要不要就這樣提前展期,還是等到年底再來搬家……?
(說起來,要說需要更新的東西,最近因為 regreSSHion 檢查了一下,發現跑這個站的這台 VM 用的映像檔的作業系統 LTS 剛到期,大概需要找個時間來升級了……預期一下這個站在近期的某個週末會停機個幾個小時吧。)
註腳
- 不是放這個站的這台:這台用的是單一域名憑證,只需要我表示 blog.cruciferslab.net 這個域名所在機器是我的,這可以用網址回應解決;這裡出問題的是另一台機器,上面預計是要放我的其他這個域名的東西,雖然現在仍然還是施工中就是了 (倒) 既然是其他 *.cruciferslab.net 的所有網域,要的憑證就需要是 wildcard 憑證了。 ↩︎
- Let’s Encrypt 發的憑證效期是有名的短,只有 90 天,這是他們故意設計的,要讓我們這些使用者去設定 certbot 自動更新;certbot 預設在剩 30 天時會更新,所以基本上就會是兩個月要更新一次。 ↩︎
- 原因是 Cloudflare 他們的快取服務的 SSL 設定,預設是 Flexible 會在連向來源伺服器時用未加密 HTTP 連線,但我的這兩台機器都有設定未加密 HTTP 會自動重導向到加密 HTTPS,所以就掉進無限迴圈了。把它的設定改成 Full 以上就能解決。 ↩︎