我已经为 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 需要有效的域名进行检查。