我想把两个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>大多数人都有WinXP和Internet,所以这有点让人担心。我如何以不同的方式设置SSL,使其对每个人都有效?
发布于 2012-01-15 21:57:05
在同一Apache Httpd服务器(以及任何HTTPS服务器)上使用多个主机名会产生两个问题:
HTTPS是HTTP之上的SSL/TLS: SSL/TLS握手,它建立了安全隧道,是由客户端在创建TCP连接之后,在进行任何HTTP交换之前启动的。HTTPS交换的所有后续HTTP通信都是在这个SSL/TLS连接上完成的。
服务器证书作为SSL/TLS握手的一部分由服务器发送。验证过程依赖于(a)验证证书是可信的,(b)验证证书是为客户端要联系的服务器颁发的。在这个答案在StackOverflow上中有更多的细节。
在HTTP中,请求的主机名在HTTP Host头中发送。基于名称的虚拟主机就是这样工作的:分派是基于Apache内部的Host头完成的。
但是,在成功完成Host /TLS之前,Apache无法使用header。因此,在发送服务器证书之前它是不可用的。
有两种方法可以帮助Apache Httpd在握手期间选择使用哪个证书,而不依赖于任何HTTP流量:
如果无法使用SNI或服务器上有多个IP地址,则可以使用对要服务的所有主机名有效的证书。这可以通过以下方法实现:
如果您真的想尝试SNI,那么它应该使用最近--足够的Apache 2版本,使用最近--足够的OpenSSL版本(如果使用的是主代码库提供的mod_ssl )。这里记录了这一点:http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
发布于 2012-01-15 21:16:37
SSL警告是关于基于名称的SSL站点的。传统的SSL在发送HTTP通信之前对连接进行加密,如果我没有弄错的话,它会加密TCP连接而不是HTTP会话。由于在HTTP协议中选择了虚拟主机,而且服务器需要在使用http之前设置一个安全连接,因此您只能在每个IP/端口组合中选择一个证书。默认情况下,defualt站点。
这一点改变了,因为您现在可以使用TLS (gnutls)进行加密,这实际上是SSL的“新版本”,允许基于名称的加密。但是,在旧操作系统和浏览器(如Windows )中不支持这一点。
如果你在XP上使用firefox或chrome而不是IE,这是可能的,它的工作很好。
如果您希望它在任何时候都能工作,请为网站的SSL版本配置多个IP和/或端口。如果您只有一个需要SSL的网站,则不再需要进一步的配置。
编辑:问题也变了
发布于 2016-03-02 21:15:12
虽然上面@Bruno所提供的答案确实说明了方法和原因,但它留下了一个问题,即如何用一个不太可行的解决方案来设置基于SSL/TLS启用的基于名称的虚拟主机--而是将其计算机的附加IP地址(或从他们的主机提供商那里购买)推迟,并根据情况更改httpd.conf的侦听参数。
IOW,@Bruno的答案中没有解决方案--您必须使用基于IP的虚拟主机。
另一方面,@ocsarjd解决了如何提供对基于名称的虚拟SSL主机的支持,此外还为坚持在XP上运行IE的人提供了一项工作。
使用:
<VirtualHost _default_:443>然后,mod_rewrite为无法利用SNI的浏览器提供支持,因此,没有人需要购买和/或将附加的IP地址绑定到服务器,以便Apache侦听基于IP的虚拟主机方法中的连接。
具有讽刺意味的是,@Bruno的答案确实涵盖了这些协商是如何和为什么发生的,以及过时的浏览器如何无法在Apache服务器上适当地结合基于名称的SSL虚拟主机的原因。
由于OP提出这个问题已经有一段时间了,我建议不要使用这些过时的浏览器,因为这是客户端的人为操作不安全的软件所做的选择,在我看来,这只是一个应该被忽略的人。
尽管如此,一个默认的SSL虚拟主机,其信息类似于一个自定义404页面,告诉访问者他们正在运行一个不安全的浏览器客户端,这实际上还需要几年的时间,因为肯定会有一些人拒绝停止使用自XP被EOL开发以来没有收到修补程序的IE版本,而且所有(所谓的)“现代”浏览器(IE/Edge、Firefox、Chrome/Chromium、Opera、Safari)都将通过SNI在HTTPS上容纳基于名称的虚拟主机的功能。
https://serverfault.com/questions/350127
复制相似问题