为什么 https 不支持 IP 和端口的形式?

????????关注后回复 “进群” ,拉你进程序员交流群????????

作者丨车小胖谈网络

来源丨车小胖谈网络(ID:chexiaopangnetwork)

为什么 https 不支持 IP 和端口的形式?

比如 https://30.40.50.60:8081/hello

错误的结论。

读者可以尝试用DNS解析出baidu.com的IP + 443 端口看看是不是可以?肯定是可以的,因为曾经测试过。

读者还可以尝试DNS解析出zhihu.com的IP + 443 端口看看是不是可以?肯定是不可以的,这个也测试过。

为何有以上的差别呢?

那是因为baidu在申请证书时,不仅为*.baidu.com域名申请了证书,同时为它的别名(IP地址)也申请了同一张证书。

无论用户使用域名、IP地址访问baidu,都是没有问题的,在TLS认证服务器阶段,服务器出示的是同一张证书。认证通过自然接下来的通信也没有问题。

而zhihu在申请域名时,只是申请了“*.zhihu.com”的证书,没有为其IP地址申请证书。造成的直接后果就是,用户可以使用域名访问知乎(https://zhihu.com),却无法使用DNS解析出的IP地址访问。

自然会有下一个问题,为何zhihu不为其IP地址申请证书呢?

zhihu没有属于自己的IP地址,他使用的IP地址是临时租来的。在申请证书的时候他压根不知道将来会使用什么IP地址。

为何baidu可以为其IP地址申请证书?

baidu拥有这些IP,自然可以申请。

通常使用DNS解析zhihu.com得到的IP地址,也不是专属zhihu一个网站使用,可能还会给更多网站提供host服务,那服务器如何分辨用户连接的是zhihu还是别的网站?

在IP、TCP面无法分辨,因为是IP + 端口号的组合。但是在TLS层面分别很简单,只要使用SNI = “*.zhihu.com”即可,SNI是 Server Name Indication的缩写。

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

为什么 https 不支持 IP 和端口的形式?_第1张图片

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

你可能感兴趣的:(https,编程语言,http,ssl,网络)