轉載請註明文章出處:tlanyan.me/get-ssl-cer…html
昨天寫"公共DNS服務器整理"一文整理素材時,訪問Cloudflare公共DNS服務的官網,發現網站居然是「https://1.1.1.1」!瀏覽器
恕我孤陋寡聞,這是平生第一次見到以"https"方式訪問公網IP(固然CF DNS的另外一個IP也是以https方式訪問:"https://1.0.0.1")。用多款瀏覽器測試,均認爲這是一個合法的請求地址。查看證書,是由DigiCert簽發的合法證書:服務器
能夠明確如下事實:工具
1.1.1.1
確定是一個IP;.1
不是頂級域名後綴(TLD);1.1.1.1
不是域名/主機名(FQDN);總結起來一句話:能給IP頒發合法SSL證書?測試
在superuser網站上,有相似的疑惑:Why does my browser think that https://1.1.1.1 is secure?。根據網友答案,能夠給公網IP頒發證書,但罕見。網站
確承認覺得IP簽發證書,繼續查資料,找到以下信息:ui
根據第二條,我的不能爲IP申請證書;若是沒有IP全部權,企業或機構從雲廠商獲取到的IP也不能申請證書,由於有使用權但沒有全部權。域名比IP(相對)更容易獲取,而且一個域名能夠對應多個IP,故而極少有爲IP申請證書的狀況。spa
弄清楚其中道理,接下來驗證一下與理論是否相符。code
先請出免費獲取證書的Let's Encrypt
的certbot
工具,嘗試爲IP頒發證書,輸出以下:cdn
[root@xxxx ~]# certbot certonly --standalone -d xxx.xxx.xxx.xxx
Requested name xxx.xxx.xxx.xxx is an IP address. The Let's Encrypt certificate authority will not issue certificates for a bare IP address.
複製代碼
結論:Let's Encrypt
不能爲IP簽發證書!
接着嘗試從證書頒發機構獲取。在DigiCert
的訂單頁面,主機名一欄對輸入數據的反饋以下:
公網IP
結論:公網IP能夠獲取SSL證書!
內網IP
結論:不能爲內網IP簽發SSL證書!
域名
結論:毫無疑問是沒問題的
測試結果與理論相符(付款及後續步驟沒驗證)。