今天個人我的站點SSL/TLS證書到期,個人證書是由Coding Pages提供的,每次申請成功後有效期是三個月,證書到期後能夠繼續免費申請。可是當我登錄進入Coding Pages服務的後臺並點擊申請證書時,居然報錯了!!html
我從新點了申請,幾秒後依然報錯,並提示我半小時只能申請一次。我查看了下報錯的提示信息,以下:git
urn:acme:error:unauthorized:Invalid response from http://exmaple.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: xxxxxxxxxgithub
一時間也不明白是怎麼回事,由於我第一次申請的時候不用幾秒鐘就成功了,因爲報錯信息中包含了本靜態博客的部署時間,我覺得可能存在部署時間的校驗,因而從新部署了一下,半小時後繼續申請,依然報一樣的錯誤。緩存
好吧,有事就問度娘,百度了一下,發現了Coding Pages的官方文件:Coding Pages 常見問題安全
這時候按照官方文件的指引,找到了和我同樣的錯誤信息的解決方案:服務器
錯誤緣由:沒法獲取正確的域名驗證信息
解決方式1:檢查 DNS 的 CNAME 記錄是否設置正確,靜態 Pages 爲 pages.coding.me,動態 Pages 爲 pages.coding.io
解決方式2:檢查域名的 DNS 是否將海外線路解析到 Coding Pages 的服務器dom
由於Coding Pages的靜態Pages是免費的,而動態Pages是收費的,對於用Hexo搭建的靜態站點,天然是選擇免費的靜態Pages服務就足夠了。因而解決方式1對我來講就不存在了,接着聯想到以前我對部署在GitHub Pages上的我的站點進行了自定義域名綁定+域名解析設置,有些豁然開朗的感受。ide
因爲個人我的站點是同時部署到GitHub Pages和Coding Pages上的,接着在阿里雲域名解析裏進行了配置:默認的解析線路將個人域名指向pages.coding.me
,國外的解析路線則是指向了lewky.github.io
。ui
之因此這樣配置,是由於國內部分地區沒法直接訪問GitHub,天然就沒法訪問我部署在GitHub上的我的站點,因而我又選擇了Coding.net的Pages服務,這樣國內用戶就能夠快速訪問到我部署在Coding Pages的我的站點,而國外用戶則是快速訪問到Coding Pages上的我的站點。this
問題就出如今這裏,由於我第一次申請SSL/TLS證書的時候,尚未解析境外的線路,因此很快就申請成功了。後來添加了國外線路的解析,這致使在Coding Pages的後臺申請證書時沒法經過驗證,天然就申請失敗了。
分析到這裏,我也基本知道怎麼解決這個錯誤了。
因爲我是在阿里雲購買的域名,因而登錄到阿里雲域名解析的後臺系統,打開我的域名的解析設置,暫停對於境外線路的解析。這裏暫停就好了,通常來講大概須要5分鐘左右的生效時間,畢竟DNS解析是存在緩存的。
五分鐘後,我又進入Coding Pages服務的後臺,再一次申請SSL/TLS證書,果不其然,幾秒鐘後我申請證書成功,又給續了三個月。
最後,再次返回阿里雲域名解析的後臺,將境外解析的線路再次啓用,嗯,完美。
這裏羅列下申請證書時全部可能遇到的錯誤與解決方案,以備不時之需。
一、錯誤信息:DNS problem: NXDOMAIN looking up A for example.com
錯誤緣由:域名不存在
解決方式1:檢查域名是否填寫正確
解決方式2:到域名註冊商處檢查是否設置了 DNS 服務器
解決方式3:諮詢 DNS 服務商是否支持解析該域名
二、錯誤信息:DNS problem: SERVFAIL looking up A for exmaple.com
錯誤緣由:DNS 解析 A 記錄出錯
解決方式1:到域名註冊商處檢查是否設置了 DNS 服務器
解決方式2:諮詢 DNS 服務商是否屏蔽了 Let’s Encrypt 的解析請求
三、錯誤信息:DNS problem: SERVFAIL looking up CAA for example.com
錯誤緣由:DNS 解析 CAA 記錄出錯
解決方式1:到域名註冊商處檢查是否設置了 DNS 服務器
解決方式2:諮詢 DNS 服務商是否支持解析 CAA 記錄
四、錯誤信息:DNS problem: query timed out looking up A for exmaple.com
錯誤緣由:DNS 解析超時
解決方式1:到域名註冊商處檢查是否設置了 DNS 服務器
解決方式2:諮詢 DNS 服務商是否屏蔽了 Let’s Encrypt 的解析請求
解決方式3:從新申請
解決方式4:檢查域名的 DNS 是否將海外線路解析到 Coding Pages 的服務器
五、錯誤信息:Fetching http://exmaple.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: xxxxxxxx
錯誤緣由:獲取域名驗證信息失敗
解決方式1:從新申請
解決方式2:請確認是否啓動了 DNS 的分區解析。若是有則要把國外的解析記錄也設置成 CNAME 至 pages.coding.me。SSL 證書是經過 Let’s Encrypt API 申請。申請證書前須要驗證域名,而 Let’s Encrypt 位於國外,因此須要保證 Let’s Encrypt 能經過您的域名正常訪問到 Coding Pages 服務器以讀取驗證信息。
錯誤信息:Error creating new authz :: Name does not end in a public suffix
錯誤緣由:域名不以公共後綴結尾
解決方式:諮詢域名註冊商
一、錯誤信息:Invalid response from http://exmaple.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: xxxxxxxxx
錯誤緣由:沒法獲取正確的域名驗證信息
解決方式1:檢查 DNS 的 CNAME 記錄是否設置正確,靜態 Pages 爲 pages.coding.me,動態 Pages 爲 pages.coding.io
解決方式2:檢查域名的 DNS 是否將海外線路解析到 Coding Pages 的服務器
二、錯誤信息:The key authorization file from the server did not match this challenge
錯誤緣由:沒法獲取正確的域名驗證信息
解決方式1:檢查 DNS 的 CNAME 記錄是否設置正確,靜態 Pages 爲 pages.coding.me,動態 Pages 爲 pages.coding.io
解決方式2:檢查域名的 DNS 是否將海外線路解析到 Coding Pages 的服務器
三、錯誤信息:Error creating new authz :: 「example.com」 was considered an unsafe domain by a third-party API
錯誤緣由:沒法獲取正確的域名驗證信息
解決方式:使用 https://transparencyreport.google.com/safe-browsing/search 查看域名存在的安全隱患,按照說明進行清理,清理完後到 https://www.stopbadware.org/ 提交審查請求。審查經過後,回到 Coding Pages 從新申請證書
錯誤信息:No valid IP addresses found for example.com
錯誤緣由:找不到可用 IP 地址
解決方式1:檢查 DNS 的 CNAME 記錄是否設置正確,靜態 Pages 爲 pages.coding.me,動態 Pages 爲 pages.coding.io
解決方式2:檢查域名的 DNS 是否將海外線路解析到 Coding Pages 的服務器
解決方式3:諮詢 DNS 服務商是否屏蔽了 Let’s Encrypt 的解析請求
錯誤信息:Error creating new cert :: too many certificates already issued for exact set of domains: example.com
錯誤緣由:證書申請數目超出限制
解決方式:下週再從新申請,詳情見 https://letsencrypt.org/docs/rate-limits/
錯誤信息:Error creating new authz :: Policy forbids issuing for name
錯誤緣由:相關政策禁止爲此域名簽發證書