SSL/TLS证书中的IP地址通配符



用于保护网站安全的SSL/TLS证书允许指定子域通配符:

  • *.example.com对www.example.com、子域example.com等有效

是否可以对IP地址使用通配符?特别是,我想要一个用于本地开发的SSL证书,如下所示:

  • 192.168.1.*,它将对我的WiFi路由器的NAT网络内可访问的256个不同IP地址中的任何一个有效

我不想只使用localhost127.0.0.10.0.0.0::1作为证书的备用名称,我还希望能够连接我的手机来测试我的网站的开发版本,比如192.168.1.40。但是,同一个证书不能从不同的开发机器重复使用,因为它会在同一网络上获得不同的IP。


Let's encrypt不支持使用IP地址,这意味着我将使用自签名或本地信任的证书。

否。RFC 2818第3.1节规定了dNSName项的通配符匹配;虽然这里还不清楚,但这是普遍实现的,只允许通配符作为最左边的DNS标签,这是最不重要的,因为DNS名称是从右到左的。它指定,如果使用iPAddress,匹配必须精确(没有通配符(,即使它允许通配符,因为IP地址是从左到右的,只有右边的通配符(如您建议的通配符(会很有用。

然而,如果你像许多人一样只使用192.168.x.0或更低的/24,并且可能只使用该范围内的一些地址,那么就不难在证书中列出你需要的所有地址。例如,如果你使用的是DHCP分配的地址,这些地址通常只覆盖网络掩码标称可用范围的一半或更少。

NoCA在CA/浏览器论坛规则下运行,因此被主要浏览器接受,将为私有(RFC 1918(地址颁发证书;请参阅https://wwww.cabforum.org。出于同样的原因,他们也不会像.local .localdomain .dev .test那样使用本地域名或"伪造"域名。

BTW 127.0.0.1和::1是真实地址,尽管不可路由,因此只能在本地使用。0.0.0.0和::0不同;它们根本不是地址,你不能向它们发送connect();事实上,它们被用来表示没有连接的状态。可以在bind()使用它们,但这实际上意味着绑定到所有配置的地址(和接口(。

最新更新