SSL/TLS 证书中的 IP 地址通配符
IP-address wildcard in SSL/TLS certificates
用于保护网站安全的 SSL/TLS 证书允许指定子域通配符:
*.example.com
将对 www.example.com、subdomain.example.com 等有效
是否可以对 IP 地址使用通配符?特别是,我想要一个用于本地开发的 SSL 证书,如下所示:
192.168.1.*
,这对我的 WiFi 路由器的 NAT 网络内可访问的 256 个不同 IP 地址中的任何一个都有效。
除了使用 localhost
、127.0.0.1
、0.0.0.0
、::1
作为我的证书的备用名称,我还希望能够连接我的手机 phone 来测试我的网站的开发版本,可以说 192.168.1.40
。但是同一个证书不能从不同的开发机器上重复使用——因为它会在同一个网络上获得不同的 IP。
Let's encrypt 不支持使用 IP 地址 - 这意味着我会改为使用自签名或本地信任的证书。
没有。 RFC 2818 section 3.1 指定dNSName 项的通配符匹配;虽然这里并不清楚,但普遍实施是为了允许通配符仅作为最左边的 DNS 标签,这是最不重要的,因为 DNS 名称是 right-to-left。它指定如果使用 iPAddress 则匹配必须是精确的(没有通配符),即使它允许通配符,因为 IP 地址是 left-to-right,只有右边的通配符,就像你建议的那样,会有用.
但是,如果您只使用 192.168.x.0 的 /24 或更少,就像许多人所做的那样,并且可能只使用该范围内的一些地址,则不难在证书中列出您需要的所有地址。例如,如果您使用 DHCP-assigned 地址,通常这些地址仅覆盖网络掩码标称可用范围的一半或更少。
No CA 在 CA/Browser 论坛规则下运行,因此为主流浏览器所接受,将为 private(RFC 1918)地址;请参阅 https://wwww.cabforum.org 中的基本要求。出于同样的原因,他们也不会像 .local .localdomain .dev .test
这样的本地或 'fake' 域名。
BTW 127.0.0.1 和 ::1 是真实地址,尽管不可路由,因此只能在本地使用。 0.0.0.0 和 ::0 是不同的;它们根本不是地址,您不能 connect()
它们;实际上它们是用来表示未连接的状态。您 可以 在 bind()
中使用它们,但这实际上意味着绑定到 所有 配置的地址(和接口)。
用于保护网站安全的 SSL/TLS 证书允许指定子域通配符:
*.example.com
将对 www.example.com、subdomain.example.com 等有效
是否可以对 IP 地址使用通配符?特别是,我想要一个用于本地开发的 SSL 证书,如下所示:
192.168.1.*
,这对我的 WiFi 路由器的 NAT 网络内可访问的 256 个不同 IP 地址中的任何一个都有效。
除了使用 localhost
、127.0.0.1
、0.0.0.0
、::1
作为我的证书的备用名称,我还希望能够连接我的手机 phone 来测试我的网站的开发版本,可以说 192.168.1.40
。但是同一个证书不能从不同的开发机器上重复使用——因为它会在同一个网络上获得不同的 IP。
Let's encrypt 不支持使用 IP 地址 - 这意味着我会改为使用自签名或本地信任的证书。
没有。 RFC 2818 section 3.1 指定dNSName 项的通配符匹配;虽然这里并不清楚,但普遍实施是为了允许通配符仅作为最左边的 DNS 标签,这是最不重要的,因为 DNS 名称是 right-to-left。它指定如果使用 iPAddress 则匹配必须是精确的(没有通配符),即使它允许通配符,因为 IP 地址是 left-to-right,只有右边的通配符,就像你建议的那样,会有用.
但是,如果您只使用 192.168.x.0 的 /24 或更少,就像许多人所做的那样,并且可能只使用该范围内的一些地址,则不难在证书中列出您需要的所有地址。例如,如果您使用 DHCP-assigned 地址,通常这些地址仅覆盖网络掩码标称可用范围的一半或更少。
No CA 在 CA/Browser 论坛规则下运行,因此为主流浏览器所接受,将为 private(RFC 1918)地址;请参阅 https://wwww.cabforum.org 中的基本要求。出于同样的原因,他们也不会像 .local .localdomain .dev .test
这样的本地或 'fake' 域名。
BTW 127.0.0.1 和 ::1 是真实地址,尽管不可路由,因此只能在本地使用。 0.0.0.0 和 ::0 是不同的;它们根本不是地址,您不能 connect()
它们;实际上它们是用来表示未连接的状态。您 可以 在 bind()
中使用它们,但这实际上意味着绑定到 所有 配置的地址(和接口)。