没有www的ServerAlias不能在SSL虚拟主机上工作

我正在将一个站点从一台服务器移动到另一台,并使用当前的和仍然有效的SSL证书。 我正在使用的机器是Ubuntu 14.04服务器。 我已经build立了通常的虚拟主机文件,我们称之为my_domain.conf。 这些是它的内容:

 #debuggingVirtualHost附近的主要/次要标志
 VirtualHost *:443
         ServerAdmin [email protected]
         ServerName mydomain.com
         ServerAlias www.mydomain.com
         SSLEngine上
         SSLCertificateFile /etc/ssl/certs/mydomain.com.crt
         SSLCertificateKeyFile /etc/ssl/private/mydomain.com.key
         DocumentRoot /var/www/html/mydomain.com/public
         ErrorLog /var/log/apache2/mydomain-error.log
         TransferLog /var/log/apache2/mydomain-access.log
 /虚拟主机

现在,当我在浏览器上inputwww.mydomain.com时,VirtualHost工作。 但是,当我键入mydomain.com,它不。 客户和webdesigner都需要它,所以我无法避免它。
我试过了

  • 交换ServerName和ServerAlias,并只使用ServerName
  • 禁用所有其他虚拟主机,包括默认主机
  • 添加SSLStrictSNIVHostCheck在注意到我的一般(而不是特定于站点)error.log此行之后,closures: [ssl:warn] [pid 6558] AH02292: Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)

没有什么改变,我真的不明白为什么会发生这种情况

编辑:我忘了添加,通过“它不工作”我的意思是虚拟主机configuration文件被绕过,浏览器带我到apache2默认文档根

消息“基于名称的SSL虚拟主机仅适用于支持TLS服务器名称指示的客户端”是指在Web客户端(即浏览器)中缺less对SNI的支持。 换句话说,这个消息通常并不指出你的服务器设置的问题,而只是一些警告,一些浏览器将无法访问服务器。 为了清楚起见,这只是一个“信息”消息,并不表示任何错误。

值得注意的是,许多较旧的浏览器没有SNI支持,因此无法在多域证书中的主题备用名称(SAN)之间进行协商。 对于浏览器列表或者更多的信息,你可以做一个“SNI支持”的网页search,但是实际上,你将不得不有一个非常有说服力的理由来放弃使用多域名证书与旧版浏览器兼容。

任何人都可以帮助您find问题之前,您可能需要调高LogLevel以获取更详细的信息。

同样在这里。 我放弃了在SSL主机上制作ServerAlias。 我的解决scheme

 VirtualHost *:443 ServerAdmin [email protected] ServerName mydomain.com ... /VirtualHost VirtualHost *:443 ServerAdmin [email protected] ServerName www.mydomain.com ...//same as above /VirtualHost 

我知道这是丑陋的,但它的作品 – 没有头痛。

我有非常类似的问题,并使用debugging日志级别计算出来。 我没有禁用默认虚拟主机定义(ssl.conf)。 没有DocumentRoot或ServerName或别名,但由于某种原因,这个configuration与我的虚拟主机冲突。 所以解决它只是评论整个默认的虚拟主机部分:

 #<VirtualHost _defaulr_:443> #... #</VirtualHost> 

将证书详细信息复制到虚拟主机或外部(用于全局使用)并重新启动apache。 这对我有帮助。