SSL 虚拟主机上不包含 www 的 ServerAlias 不起作用

SSL 虚拟主机上不包含 www 的 ServerAlias 不起作用

我正在将网站从一台服务器移至另一台服务器,并使用其当前且仍然有效的 SSL 证书。我正在使用的机器是 Ubuntu 14.04 服务器。我已经设置了我常用的虚拟主机文件,我们将其称为 my_domain.conf。以下是其内容:

#省略 VirtualHost 附近的主要/次要标志
虚拟主机 *:443
        服务器管理员[电子邮件保护]
        服务器名称 mydomain.com
        服务器别名 www.mydomain.com
        SSLEngine 开启
        SSL证书文件 /etc/ssl/certs/mydomain.com.crt
        SSLCertificateKeyFile /etc/ssl/private/mydomain.com.key
        DocumentRoot /var/www/html/mydomain.com/public
        错误日志 /var/log/apache2/mydomain-error.log
        传输日志 /var/log/apache2/mydomain-access.log
/虚拟主机

现在,当我在浏览器上输入 www.mydomain.com 时,VirtualHost 可以工作。但是当我输入 mydomain.com 时,它却不行。客户和网页设计师都需要它,所以我无法避免它。
我试过了

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

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

编辑:我忘了补充,“它不起作用”的意思是虚拟主机配置文件被绕过,浏览器将我带到 apache2 默认文档根目录

答案1

我也是。我放弃尝试在 SSL 主机上创建 ServerAlias。我的解决方案:

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

我知道它很丑,但是它能起作用——不会让人头疼。

答案2

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

值得注意的是,许多旧版浏览器不支持 SNI,因此无法在多域证书中协商主题备用名称 (SAN)。如需查看浏览器列表或了解更多信息,您可以在网上搜索“SNI 支持”,但实际上,您必须有非常充分的理由才能放弃使用多域证书,以便与旧版浏览器兼容。

你可能需要提高你的LogLevel获取更详细的信息,然后其他人才能帮助您找到问题。

答案3

我遇到了非常类似的问题,并使用调试日志级别解决了该问题。我没有禁用默认虚拟主机定义 (ssl.conf)。那里没有 DocumentRoot 或 ServerName 或 Alias,但由于某种原因,此配置与我的 vhost 冲突。因此,要解决此问题,只需注释掉整个默认虚拟主机部分:

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

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

答案4

仅尝试使用 ServerAlias 例如:

ServerAdmin [email protected]
ServerAlias example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/

我目前正在使用它并且我的网站运行良好。

相关内容