
我終於在給我帶來麻煩的 AWS EC2 Linux 執行個體上安裝了 certbot-auto,並且我正在嘗試從 Let's Encrypt 取得通配符憑證。
我被告知要在名稱(為了保護無辜而更改)_acme-challenge.foo.bar.net 下放置一條 TXT 記錄,並指定一個值。
因此,我前往 Route 53 控制台頁面,然後選擇 bar.net 託管區域。我使用指定的值來新增 _acme-challenge.foo.bar.net 記錄,按一下“儲存記錄集”,然後等待幾分鐘。然後我選擇它,並點擊“測試記錄集”,Route 53 認為它已發布。
但是,當我告訴 certbot-auto 繼續,而 Let's Encrypt 查找記錄時,它不存在。如果我執行 nslookup -q=txt _acme-challenge.foo.bar.net,我得到
伺服器找不到 _acme-challenge.foo.bar.net
對於 nslookup -q=txt foo.bar.net,我得到
伺服器找不到 foo.bar.net
然而,如果我在 foo.bar.net 上進行常規 nslookup,我就能找到它。
出了什麼問題?
答案1
我找到問題的根源了。
在交叉檢查 NS 記錄中列出的伺服器時,我碰巧注意到 TXT 記錄上的名稱不是(名稱仍然更改以保護無辜者)
_acme-challenge.foo.bar.net
但
_acme-challenge.foo.bar.net.bar.net
我沒有註意到 Route 53 控制台的記錄集編輯器將託管區域的網域放在用於輸入記錄集名稱的欄位的右側,然後將其附加到您輸入的內容中。所以我輸入了整個記錄名稱,從而兩次獲得“.bar.net”,一次顯式,一次隱式。
借用一位名叫蒙哥馬利·斯科特(Montgomery Scott)的虛構工程師首先說出的一句話:
你對管道考慮得越多,就越容易堵塞下水道。