Thi*_*key 4 mod-rewrite ssl https apache-2.2
设想:
我有 2 个域:thinkingmonkey.me
& thinkingmonkey.com
。整个网站都在 下访问https
。从通用名称的 CA 购买了证书thinkingmonkey.me
。
对于http
:
www.thinkingmonkey.com、 thinkingmonkey.com和 www.thinkingmonkey.me有一个虚拟主机,并使用 _mod_rewrite_ 规则重定向到https://thinkingmonkey.me。
thinkmonkey.me有其单独的虚拟主机。
一切正常。
情况也是如此https
:
即www.thinkingmonkey.com、 thinkingmonkey.com和 www.thinkingmonkey.com有一个虚拟主机,并使用 _mod_rewrite_ 规则重定向到https://thinkingmonkey.me。
thinkmonkey.me有其单独的虚拟主机。
问题
- 现在,如果访问https://www.thinkingmonkey.com或https://thinkingmonkey.com,
- mod_ssl起作用并且在mod_rewrite重写https://thinkingmonkey.me之前发生 TLS 握手。
- 由于证书中的通用名称在thinkingmonkey.me下,此连接不受信任警告会在浏览器中显示。
- 除非我通过接受证书来完成握手,否则它不会被重定向到thinkingmonkey.me。这很烦人。
那么,
有没有办法访问mod_rewrite
之前mod_ssl
?
或者
我是否必须购买单独的证书才能摆脱这种情况?
不,HTTPS 是基于 TLS/SSL 的 HTTP(请参阅RFC 2818),它在发送任何 HTTP 流量之前首先建立 SSL/TLS 连接。mod_rewrite
将始终在 SSL/TLS 连接建立后应用。
不这样做实际上是一个安全问题,因为攻击者可以在验证证书之前重写和重定向客户端。即使 TLS 升级在 HTTP 内(RFC 2817,实际上从未使用/支持,也不是https
),您仍然希望重定向来自受信任的实体。
解决此问题的方法是使用具有多个主题备用名称 (SAN) DNS 条目的证书,每个主机名一个,或多个证书(在这种情况下,每个证书可能也需要一个 IP 地址,除非您愿意使用服务器名称指示)。
归档时间: |
|
查看次数: |
3012 次 |
最近记录: |