当不支持SSL时,https请求的规范处理



如果客户端请求没有有效的CA签名证书的域,并且服务器不打算支持HTTP,但确实支持HTTP为此域名,那么处理的最佳方法是处理这在Web服务器中。请注意,该服务器确实处理其他域上SSL(HTTPS(的请求,因此它在443上侦听。

示例适用的示例是用于动态创建子域的多子域,因此很难注册CA签名的证书。

我已经看到人们试图使用HTTP错误代码做出响应,但是这些似乎是无声的,因为客户端(浏览器(将首先验证证书,并在处理任何HTTP之前向用户提出硬警告。因此,如果客户"继续"警告,则只会看到错误代码。

是否有一种规范的方式来处理这种情况?

对于这种情况,没有规范的方式。如果HTTP被打破,客户不会自动降级到HTTP,并且在这方面更改客户将是一个非常糟糕的主意 - 攻击者攻击HTTPS所需的一切都是通过HTTPS流量来推断HTTPS以使客户端成为客户端降级到未保护的HTTP流量。

因此,您需要确保客户端不尝试访问无法正常工作的URL(即不要发布该URL(,或者确保您拥有这些子域的工作证书,即,调整子域的创建过程,以便它们不仅具有IP地址,还具有有效的证书(也许使用通配符证书(。

考虑这些网站不必与SSL合作,网络服务器应以适当的方式关闭所有SSL连接。

没有规范的方法,但是RFC 5246隐含地建议通过使用user_cancel colles_notify nervers中断服务器端的握手。如何实现这一点是另一个问题,它将是默认SSL虚拟主机的配置。

user_canceled

由于某种原因,此握手被取消协议故障。如果用户在以后取消操作握手已经完成,只需通过发送一个close_notify更合适。该警报应遵循通过close_notify。此消息通常是一个警告。

如果您要处理子域,则可以为所有子域使用通配符证书。将CA证书添加到您的客户中会删除警告(这是公司所做的,不用担心(。例如,在使用Apache托管时,您可以使用VirtualDocumentRoot添加域而无需编辑配置。查看此处提供的解决方案:使用VirtualDocumentRoot

在SSL中的虚拟托管

最新更新