我们有多台服务器和一台负载均衡器。首次配置服务器时,将创建自签名证书。然后,服务器将其固定IP注册到负载均衡器。
当我们自己的Android应用程序想要访问服务器时,负载均衡器会告诉它IP。由于我们可以通过在SSLContext中安装证书来信任我们自己的证书,因此Android应用程序可以使用SSL与服务器通信。
问题:我们希望扩展系统,以便任意浏览器可以访问我们的服务器,但这些服务器不会信任我们的自签名证书并向用户显示丑陋的消息。
因此,我们必须使用来自可信CA的证书。但是我们遇到的问题是,负载均衡器使用的是IP,而不是域(可以更改)。如果我们想使用基于域的证书,我们必须在每台服务器上手动安装证书,和/或我们必须为域配置DNS。
How are ssl certificates verified?解释了身份验证过程中的步骤,但我没有清楚地看到浏览器如何知道它所联系的IP属于给定域?它看反向条目吗?我可以以某种方式欺骗此系统以解决手动安装和/或配置DNS的问题吗?此外,我认为即使是域证书通常也会发布到IP,因此我必须为每个服务器重新发布它。任何人都可以连接点吗?如我们目前所做的那样,自动配置服务器的最佳方法是什么,但是使用来自CA的证书而不是自签名证书?是否有人知道我可以使用带有API的CA?
答案 0 :(得分:0)
浏览器知道它所联系的IP属于某个域吗?
它没有。通用名称验证机制是:证书中的名称必须与地址栏中的名称匹配。
如果客户端按名称连接到远程服务器,则响应中的证书必须包含该主题字段或主题备用名称证书扩展中的名称。
如果客户端通过IP连接到远程服务器,则响应中的证书必须包含该主题字段或主题备用名称扩展名中的IP。
IP的问题在于商业(公开信任)CA不会向IP地址颁发证书。仅限合格的域名。