我想将两个 DNS 的 A 记录设置为指向我的 Ubuntu 实例。然后 Apache 应该相应地读取域名并将传入的请求指向正确的物理路径。
我已经设置好了这是/etc/apache2/ports.conf的内容
我担心 WinXP 用户无法根据下面的评论访问我的 SSL 站点,那么我应该如何做?
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
NameVirtualHost *:443
Listen 443
</IfModule>
Run Code Online (Sandbox Code Playgroud)
大多数人都有 WinXP 和 Internet Explorer,所以这有点令人担忧。我如何以不同的方式设置 SSL,以便它对每个人都有效?
Bru*_*uno 10
在同一个 Apache Httpd 服务器(以及任何 HTTPS 服务器)上使用多个主机名会带来两个问题:
HTTPS 是基于 SSL/TLS 的 HTTP:建立安全隧道的 SSL/TLS 握手由客户端在创建 TCP 连接之后、在进行任何 HTTP 交换之前启动。HTTPS 交换的所有后续 HTTP 流量都通过此 SSL/TLS 连接完成。
服务器证书由服务器作为 SSL/TLS 握手的一部分发送。验证过程依赖于 (a) 验证证书是可信的,以及 (b) 验证它是为客户端打算联系的服务器颁发的。StackOverflow 上的这个答案中有更多详细信息。
在 HTTP 中,请求的主机名在 HTTPHost
标头中发送。这就是基于名称的虚拟主机的工作方式:分派是基于Host
Apache Httpd 内部的标头完成的。
但是,在Host
SSL/TLS 成功完成之前,Apache Httpd 无法使用HTTP标头。因此,在发送服务器证书之前它不可用。
有两种方法可以帮助 Apache Httpd 在握手期间选择使用哪个证书,而不依赖于任何 HTTP 流量:
如果您无法使用 SNI 或在您的服务器上有多个 IP 地址,您可以使用对您想要提供服务的所有主机名都有效的证书。这可以通过使用:
如果您真的想尝试 SNI,它应该使用足够新的 Apache Httpd 2 版本,使用足够新的 OpenSSL 版本(如果使用mod_ssl
与主代码库一起提供的)。这在此处记录:http : //wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
归档时间: |
|
查看次数: |
16742 次 |
最近记录: |