更正 apache 上的默认 SSL 配置

更正 apache 上的默认 SSL 配置

我有许多虚拟主机为 apache 站点提供服务。每个站点都有自己的配置文件,许多站点都设置了 SSL 证书。

00_default.conf 文件<VirtualHost *:80>指向静态 404 类型页面

这一切都运行良好...我的问题是,如果您以 https 模式访问没有 SSL 设置或没有配置文件的站点,它会默认使用它找到的第一个包含的配置文件中的 SSL 证书<VirtualHost *:443>

我假设我需要在 00_default.conf 中创建一个规则,以捕获通过 HTTPS 请求时不存在的页面请求。到目前为止,我还没有找到可行的配置。

答案1

有两件事:

  • 当您使用 HTTPS 连接到未提供有效 TLS 证书(其中包含您在 URL 中输入的网站名称)的网站时,您始终会收到浏览器警告/错误消息。指定其他虚拟主机来处理这些请求不会改变这一基本事实。
  • 指定特定虚拟主机成为默认的 HTTPS 虚拟主机只会改变将出示哪个(不匹配的) TLS 证书以及将显示哪些 Web 内容。

正确解决此问题的最佳方法是为您在 Web 服务器上托管的所有网站设置 HTTPS。

如果没有的话:可能最简单的方法是将 HTTPS VirtualHost 条目添加到您现有的条目中,00_default.conf结果如下:

<VirtualHost _default_:80>
        ServerName      www.example.com
        ServerAlias     example.com
        DocumentRoot    /var/www/html/www.example.com/
</VirtualHost>

<VirtualHost _default_:443>
        ServerName      www.example.com
        ServerAlias     example.com
        DocumentRoot    /var/www/html/www.example.com/
        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
        SSLHonorCipherOrder On
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff
        SSLCompression off
        SSLUseStapling on
        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
        SSLCACertificateFile /etc/letsencrypt/live/www.example.com/chain.pem
</VirtualHost>

相关内容