背景
最近小編申請了兩個.top域名進行測試,因為.top域名比較便宜😄,但是在申請SSL證書的時候卻出了問題,小編的環境配置為:Centos7.5伺服器,利用的事Certbot申請SSL域名,使用的命令是:
sudo certbot certonly --nginx
總是報下面的錯:
Requesting a certificate for xxxx.top and www.xxxx.top Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems: Domain: xxxx.top Type: dns Detail: DNS problem: looking up A for xxxx.top: DNSSEC: DNSKEY Missing; DNS problem: looking up AAAA for xxxx.top: DNSSEC: DNSKEY Missing Domain: www.xxxx.top Type: dns Detail: DNS problem: server failure at resolver looking up A for www.xxxx.top; DNS problem: looking up AAAA for www.xxxx.top: DNSSEC: DNSKEY Missing Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet. Some challenges have failed. Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
問題排查過程
剛開始以為是DNS解析未生效的問題導致的,後來等了一天多還是不行,利用dig命令確認了域名已經正確解析到了制定的ip地址。
[root@cloud-sbrtud-is1k nginx]# dig xxxx.top ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> xxxx.top ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17334 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;xxxx.top. IN A ;; ANSWER SECTION:xxxx.top. 3600 IN A xxx.xx.7x.xx ;; Query time: 185 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: 三 6月 26 13:27:45 CST 2024 ;; MSG SIZE rcvd: 54
現在可以排除是簡單的DNS解析導致的問題,有可能跟DNSSEC設定有關,因為我的域名是透過NameSilo註冊的,可以透過Manage DNS中的Manage DS Records (DNSSEC)連結確認我並沒有設定DNSSEC相關的配置,或者透過Whois公開資訊查詢也可以確認並沒有開啟DNSSEC選項,如圖2所示。
圖1
圖2
這就讓我摸不著頭腦了,而且試了兩個top域名都是同樣的問題,後來不再使用certbot申請了,換了個第三方渠道進行申請,也就是Let's Encrypt的代理商,但最終也是失敗,好無語,不過在第三方申請證書的時候發現了一個細節,代理商網站上有個公告寫著:近期使用Let's Encrypt申請.top域名證書錯誤率比較高,請考慮其他渠道申請!這個公告體現了兩層一次,第一、top域名可能原來申請是正常的,只是最近出現了問題,第二、這個問題是普遍性的!後來在Let's Encrypt的官方討論區發現了一篇帖子,地址為:
裡面有很多人都有類似的問題,最後官方人員給了回覆:
說明最近他們發現很多人出現類似問題,並且已經開始著手調查,相信不久的將來他們會處理好這個問題。
解決問題
既然Let's Encrypt證書申請不下來,但是我們依然可以透過其他渠道申請證書,比如下面的5種渠道,小編用的是ZeroSSL,剩餘的沒有測試,ZeroSSL有很好的用戶界面,申請也很快。最終小編順利申請到ssl證書。
ZeroSSL - 提供免費的單域名和萬用字元SSL證書,擁有使用者友好的介面,便於快速生成和管理證書。 Cloudflare SSL - 對於使用Cloudflare服務的使用者,他們提供名為Universal SSL的免費服務,可以為透過Cloudflare代理的任何域名提供SSL保護。 騰訊雲SSL證書 - 騰訊云爲使用者提供了免費的域名驗證型(DV)SSL證書,透過簡單的域名驗證流程即可申請。 SSL for Free - 這是一個基於Let's Encrypt的線上工具,可以幫助使用者免費獲取SSL證書,需要完成域名驗證。 Comodo - 儘管Comodo主要以其付費SSL證書聞名,但他們也提供有期限的免費SSL證書試用,適合短期或測試用途。 JoySSL - 作為國產品牌,JoySSL不僅提供有免費的單域名、泛域名證書,還為教育版和政務版域名提供一年期的免費DV單證書,強調安全性和相容性。
事件更新
這是六月底出現的問題,在八月左右的時候Let's Encrypt實際上已經處理好了這個問題,也就是可以透過sudo certbot certonly --nginx這個命令正常獲取到ssl證書了!