如果客户端请求的域没有有效的CA签名证书,并且服务器不打算支持HTTPS但是支持此域的HTTP,那么在Web服务器中处理此问题的最佳方法是什么。请注意,服务器确实处理其他域上的SSL(HTTPS)请求,因此它正在侦听443。
这适用于多子域,其中子域是动态创建的,因此很难注册CA签名证书。
我看到有人尝试使用HTTP错误代码进行响应,但这些似乎没有实际意义,因为客户端(浏览器)将首先验证证书,并在处理任何HTTP之前向用户显示硬警告。因此,客户端只有在他们"继续"超过证书警告。
是否有处理此方案的规范方法?
答案 0 :(得分:1)
此方案没有规范方法。如果HTTPS被破坏,客户端不会自动降级到HTTP,在这方面改变客户端是一个非常糟糕的主意 - 攻击者攻击HTTPS所需要做的就是用HTTPS流量来推断客户端降级为不受保护的HTTP流量。
因此,您需要确保客户端不会尝试访问无法正常工作的网址(即不发布此类网址)或确保你有这些子域的工作证书,即调整创建子域的过程,使他们不仅拥有一个IP地址,而且还有一个有效的证书(可能使用通配符证书)。
答案 1 :(得分:1)
考虑到这些网站不必使用SSL,网络服务器应该以适当的方式为它们关闭所有SSL连接。
没有规范的方法,但RFC 5246隐含地建议使用user_cancel + close_notify警报中断服务器端的握手。如何实现这一点是另一个问题,它将是默认SSL虚拟主机的配置。
user_canceled
由于与a无关的某些原因,此握手被取消 协议失败。如果用户取消后的操作 握手完成,只需通过发送一个关闭连接 close_notify更合适。应遵循此警报 通过close_notify。此消息通常是一个警告。
答案 2 :(得分:0)
如果您正在处理子域,则可能会为所有子域使用通配符证书。 将CA证书添加到客户端将删除警告(这就是公司所做的,不用担心)。 例如,在使用Apache托管时,您可以使用VirtualDocumentRoot添加域而无需编辑配置。请查看此处提供的解决方案:Virtual Hosting in SSL with VirtualDocumentRoot