爲IP簽發SSL證書

轉載請註明文章出處:tlanyan.me/get-ssl-cer…html

問題

昨天寫"公共DNS服務器整理"一文整理素材時,訪問Cloudflare公共DNS服務的官網,發現網站居然是「https://1.1.1.1」!瀏覽器

Cloudflare DNS官網截圖

恕我孤陋寡聞,這是平生第一次見到以"https"方式訪問公網IP(固然CF DNS的另外一個IP也是以https方式訪問:"https://1.0.0.1")。用多款瀏覽器測試,均認爲這是一個合法的請求地址。查看證書,是由DigiCert簽發的合法證書:服務器

1.1.1.1證書

能夠明確如下事實:工具

  1. 1.1.1.1確定是一個IP;
  2. .1不是頂級域名後綴(TLD);
  3. 1.1.1.1不是域名/主機名(FQDN);
  4. 平時極少以https訪問IP。

總結起來一句話:能給IP頒發合法SSL證書?測試

解答

在superuser網站上,有相似的疑惑:Why does my browser think that https://1.1.1.1 is secure?。根據網友答案,能夠給公網IP頒發證書,但罕見網站

確承認覺得IP簽發證書,繼續查資料,找到以下信息:ui

  1. 能簽發證書的IP只能是公網IP
  2. 只能簽發OV證書;要驗證企業名稱合法性,以及根據whois信息驗證對IP的全部權

根據第二條,我的不能爲IP申請證書;若是沒有IP全部權,企業或機構從雲廠商獲取到的IP也不能申請證書,由於有使用權但沒有全部權。域名比IP(相對)更容易獲取,而且一個域名能夠對應多個IP,故而極少有爲IP申請證書的狀況。spa

測試

弄清楚其中道理,接下來驗證一下與理論是否相符。code

Let's Encrypt

先請出免費獲取證書的Let's Encryptcertbot工具,嘗試爲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

接着嘗試從證書頒發機構獲取。在DigiCert的訂單頁面,主機名一欄對輸入數據的反饋以下:

  1. 公網IP

    公網IP

    結論:公網IP能夠獲取SSL證書!

  2. 內網IP

    內網IP

    結論:不能爲內網IP簽發SSL證書!

  3. 域名

    域名

    結論:毫無疑問是沒問題的

測試結果與理論相符(付款及後續步驟沒驗證)。

參考

  1. superuser: Why does my browser think that https://1.1.1.1 is secure?
  2. LeaderSSL: Issuing SSL certificate for an IP address
  3. DV型、OV型、EV型證書的主要區別
相關文章
相關標籤/搜索