同一 Apache 主机上的多个 SSL 证书导致显示错误证书

同一 Apache 主机上的多个 SSL 证书导致显示错误证书

我已经为 Ubuntu 主机配置了 Apache 2.4 和多个域(a.com 和默认的未指定域名,仅指定 IP)。httpd.conf 文件包含默认网站的条目(URL 中没有匹配的网站名称)和一个 a.com 条目。这很好用。我可以通过 IP 或 A.COM 访问主机并查看 2 个不同的网站。

接下来,默认站点包含一个可以正常工作的 SSL 证书。我现在将 Let's Encrypt 证书添加到我的 a.com 域,但所有访问HTTPS://我的IP导致 apache 提供与一个网站。

为什么我的 a.com 证书会出现在默认网站上?

<VirtualHost _default_:80>
  DocumentRoot "/data/websites/default"
  <Directory "/data/websites/default">
    Options -Indexes +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
      Order allow,deny
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3 >
      Require all granted
    </IfVersion>
  </Directory>

  # Error Documents
  ErrorDocument 503 /503.html

  # Bitnami applications installed with a prefix URL (default)
  Include "/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf"
</VirtualHost>

<VirtualHost _default_:443>
  DocumentRoot "/data/websites/default"
  SSLEngine on
SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key"

  <Directory "/data/websites/default">
    Options -Indexes +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
      Order allow,deny
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3 >
      Require all granted
    </IfVersion>
  </Directory>

  # Error Documents
  ErrorDocument 503 /503.html

  # Bitnami applications installed with a prefix URL (default)
  Include "/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf"
</VirtualHost>

<VirtualHost *:80>
  ServerName a.com
  DocumentRoot "/data/websites/a.com"
  ErrorLog "/data/logs/a.com-error_log"
  CustomLog "/data/logs/a.com-access_log" common
  <Directory "/data/websites/a.com">
    Options -Indexes +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
      Order allow,deny
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3 >
      Require all granted
    </IfVersion>
  </Directory>
</VirtualHost>


<VirtualHost *:443>
  ServerName a.com
  DocumentRoot "/data/websites/a.com"
  SSLEngine on
  SSLCertificateFile "/data/etc/lego/certificates/a.com.crt"
  SSLCertificateKeyFile "/data/etc/lego/certificates/a.com.key"
  <Directory "/data/websites/a.com">
    Options -Indexes +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
      Order allow,deny
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3 >
      Require all granted
    </IfVersion>
  </Directory>
  # Error Documents
  ErrorDocument 503 /503.html
  # Bitnami applications installed with a prefix URL (default)
  Include "/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf"
</VirtualHost>

答案1

两件事情:

1) HTTPS 无法通过 IP 工作,因为 SSL 的主要目的是验证域名。因此,使用 IP 检查 HTTPS 是一种错误的方法,您可以改为在客户端计算机上编辑“hosts”文件。

2) 为什么要为不提供服务的网站提供 SSL 证书?因为这是您的默认语句所做的。您可以让 HTTP (80) 请求保持响应,但它无法按照您希望的方式使用 SSL,因为 SSL 需要有效的域名进行检查。

相关内容