我的情况是: 我想在一个未知网络上的设备上运行一个web服务器。从全局IP转发到该设备的端口80或443的请求将被转发到该设备。
该设备定期向网络上的服务器发布其IP地址,并保存在该服务器上。
是否有可能轻松地通过https访问此设备? 当然问题在于,IP地址可能会更改,而SSL证书需要一个主机名。
编辑:该设备没有分配给它的域,我可以用它来获取证书。也许可以使用我拥有的一个域并将其重新路由到动态IP而不更改标头吗? 据我了解,这将使https变得可能。
我的情况是: 我想在一个未知网络上的设备上运行一个web服务器。从全局IP转发到该设备的端口80或443的请求将被转发到该设备。
该设备定期向网络上的服务器发布其IP地址,并保存在该服务器上。
是否有可能轻松地通过https访问此设备? 当然问题在于,IP地址可能会更改,而SSL证书需要一个主机名。
编辑:该设备没有分配给它的域,我可以用它来获取证书。也许可以使用我拥有的一个域并将其重新路由到动态IP而不更改标头吗? 据我了解,这将使https变得可能。
现在,在HTTPS中,服务器需要先协商一个安全的SSL连接,然后再交换任何HTTP标头。因此,问题在于它无法知道应该使用哪个域名的证书来协商安全连接,因为它尚未有机会与客户端交谈并了解其要访问的域名。
实际上,HTTPS协议的较新版本中有用于加密前的名称协商机制,但实际问题是较旧的客户端还不支持它(看着你IE6)。
因此,实际解决方案是为每个HTTPS站点保留一个IP地址和/或端口,因为这样就没有多个名称解析的问题了。一个IP地址/端口仅保留给一个特定的HTTPS站点,进而保留了一个SSL证书。
这意味着,只要您的服务器仅服务于一个HTTPS域名,它的IP地址可以随时更改,那里就没有任何问题。
动态IP地址并不是问题。在SSL证书中,您存储一个静态主机名(domain.com
),而不是IP地址。