你好,IT安全!
我有Apache2 vhost和HTTPS监听端口443,即。https:// securesecret.com。
我有另一个具有HTTP侦听端口80的vhost,即。one.com,http:// two.com。
当我访问http:// securesecret.com:443网站时,我收到了这样的消息:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
<blockquote>Hint: <a href="https://securesecret.com/"><b>https://securesecret.com/</b></a></blockquote></p>
</body></html>有关于域的信息。我怎么才能阻止它的出现呢?
apache中的适当配置在哪里?
我已经禁用了ServerToken,ServerSignature等。
发布于 2011-11-21 22:20:57
您不能真正隐藏域名,因为如果有人连接到您服务器的端口443并开始启动SSL连接,您的服务器将通过发送他的证书来响应.其中包含服务器名称。
实际上,客户端可以将预期的客户端名称作为服务器名称指示的一部分发送,这是一个新的扩展,并不是所有地方都支持它( Windows上的Internet不会发送它,它需要IE8和Vista或更高版本)。从理论上讲,服务器可能在发送证书之前等待显式SNI;但是,SNI和证书此时都将未加密,因此服务器名不能被视为真正的机密。而且,你现在无法从客户那里实际地要求一个SNI (也许在五年后,当当前的WinXP已经基本消失时……)。
此外,服务器名也是DNS发送给请求者的数据的一部分,这些数据是定期发送的,不需要任何加密。服务器名称绝对不是秘密。
发布于 2011-11-23 18:34:35
您看到的消息来自默认的apache "400错误页“。您可以通过以下方式覆盖400错误页:
ErrorDocument 400 /error-docs/400.shtml在配置文件中的适当位置。用不包括主机名的通用消息替换默认文本。
发布于 2013-02-27 22:36:05
虽然其他两个答案都很好,但这才是真正解决问题的方法。
为了解决@bstpierre和@Thomas Pornin确定的双重归巢问题,您可以使用额外的IP地址和单独的Apache。
您可以在安全IP地址上启动一个单独的Apache实例来承载安全域(包括http和https),其中一个和两个域将仅使用http对其他Apache实例和IP地址进行操作。
当然,您可能很难从提供者、路由和配置服务器获得新的IP地址,但是您需要自己确定成本/效益。
Apache配置文档有很多关于场景和选项的信息。
https://security.stackexchange.com/questions/9127
复制相似问题