我的情况: 我想在未知网络中的设备上运行Web服务器。端口80或443上的请求将从全局IP转发到此设备。
设备会定期将其IP地址发布到网络上的服务器,并保存在此服务器上。
是否可以通过https访问此设备而不会有太多麻烦? 问题当然是,ip可以改变,SSL证书需要有一个主机名。
编辑:设备没有分配给我的域,我可以将其用于证书。是否可以使用我拥有的域并将其重新路由到动态IP而不更改标头? 据我所知,这将使使用https成为可能
答案 0 :(得分:13)
与一个IP地址相关联的SSL证书的常识是误导性的。为域名颁发SSL证书,而不是IP地址。 IP地址的问题源于HTTPS协议的细节,即仅仅是名称解析的问题。 HTTP服务器可以为许多不同的域托管许多不同的站点,所有这些站点都位于相同的端口和IP地址上。它根据HTTP标头知道正在请求哪个站点。
现在,使用HTTPS,服务器 first 需要在交换任何HTTP标头之前协商安全的SSL连接。因此,问题是它无法知道它应该使用哪个域来协商安全连接的证书,因为它还没有机会与客户谈论它想要访问的域。 / p>
在HTTPS协议的更高版本中加密之前实际上存在名称协商机制,但实际问题是旧客户端尚不支持它(盯着IE6 )。 因此,实际的解决方案是为每个HTTPS站点保留一个IP地址和/或端口,因为这样就不存在多个名称解析的问题。一个IP /端口保留用于一个特定HTTPS站点,一个IP证书端口用于一个SSL证书。 这意味着,只要您的服务器只提供一个HTTPS域,其IP地址就可以随意更改;那里没有问题。
答案 1 :(得分:2)
动态IP没有问题。在SSL证书中,您存储静态主机名(domain.com
),没有IP地址。