问题
昨天写“公共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);- 平时极少以https访问IP。
总结起来一句话:能给IP颁发合法SSL证书?
解答
在superuser网站上,有类似的疑惑:Why does my browser think that https://1.1.1.1 is secure?。根据网友答案,可以给公网IP颁发证书,但罕见。
确认可以为IP签发证书,继续查资料,找到如下信息:
- 能签发证书的IP只能是公网IP;
- 只能签发OV证书;要验证企业名称合法性,以及根据whois信息验证对IP的所有权。
根据第二条,个人不能为IP申请证书;如果没有IP所有权,企业或机构从云厂商获取到的IP也不能申请证书,因为有使用权但没有所有权。域名比IP(相对)更容易获取,并且一个域名可以对应多个IP,故而极少有为IP申请证书的情况。
测试
弄清楚其中道理,接下来验证一下与理论是否相符。
Let’s Encrypt
先请出免费获取证书的Let's Encrypt
的certbot
工具,尝试为IP颁发证书,输出如下:
[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
的订单页面,主机名一栏对输入数据的反馈如下:
- 公网IP
结论:公网IP可以获取SSL证书!
- 内网IP
结论:不能为内网IP签发SSL证书!
- 域名
结论:毫无疑问是没问题的
测试结果与理论相符(付款及后续步骤没验证)。
IP证书可以在Gworg申请:https://gworg.taobao.com/
目前支持OV与DV两种类型签发IP证书,最快只需15分钟左右。
感谢提供信息
现在支持 IP 签发 SSL证书,大概有 DigiCert 和 Comodo 两大CA, 借用楼主的文章宣传一下 IP SSL证书的申请:https://www.sslzhengshu.com/validation/ip-ssl.html
根据CA-Browser-Forum对证书的要求(https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.6.3.pdf),CA机构在2015年11月之后就不允许再签发cn项(common name)或san项(subject alternative name)中包含内网地址或预留ip地址的证书,并要求从2016年10月,CA机构必须将以前签发的这类未过期的证书全部注销。所以内网地址在正规CA机构肯定无法申请证书。针对Cloudflare的证书,看证书信息,digicert实际还是针对域名签发的,因为证书cn项为cloudflare-dns.com