最后(我认为并且希望)使用 Apache 和 VirtualHosts 配置 SSL 证书的问题

最后(我认为并且希望)使用 Apache 和 VirtualHosts 配置 SSL 证书的问题

可能重复:
最后(我认为并且希望)使用 Apache 和 VirtualHosts 配置 SSL 证书的问题

最后我将 apache2 设置为为所有子域名获取单一证书

[...]

# Go ahead and accept connections for these vhosts
# from non-SNI clients
SSLStrictSNIVHostCheck off


# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443


# Because this virtual host is defined first, it will
# be used as the default if the hostname is not received
# in the SSL handshake, e.g. if the browser doesn't support
# SNI.
<VirtualHost *:443>
  ServerName domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/domain/public"

  <Directory "/Users/<my_user_name>/Sites/domain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>


<VirtualHost *:443>
  ServerName subdomain1.domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/subdomain1/public"

  <Directory "/Users/<my_user_name>/Sites/subdomain1/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>


<VirtualHost *:443>
  ServerName subdomain2.domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/subdomain2/public"

  <Directory "/Users/<my_user_name>/Sites/subdomain2/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>

例如,我可以正确访问

https://subdomain1.domain.localhost
https://subdomain2.domain.localhost
...

无论如何,现在我无法访问

http://subdomain1.domain.localhost
http://subdomain2.domain.localhost
...

由于我使用 Mac Os,因此在访问“http:版本”时,我得到一个默认页面“你的网页。“(而不是错误)。为什么会发生这种情况?

答案1

为了http://foo你需要其他虚拟主机

<VirtualHost *:80>

你有吗?

http://www.foo.comhttps://www.foo.com是不同的虚拟主机。

你不仅需要监听 443 端口,还要检查是否有听 80以及名称虚拟主机 *:80。好吧,如果您有“它有效”,则很可能您有这些设置,但没有虚拟主机。

您可以向 apache 询问他对您的虚拟主机的完整了解列表。这里我使用'阿帕奇2',根据您的安装,apache 二进制文件可能是'httpd' 或其他内容。执行:

apache 2 -S

或者

apache2 -t -D DUMP_VHOSTS 

然后您将获得虚拟主机列表。您可以看到 *:80 和 *:443 上的虚拟主机位于不同的堆栈上。

如果你认为复制粘贴很长的 Virtualhosts 定义很无聊,而这些定义在 *:80 和 *:443 Virtualhosts 上完全相同,那么可以使用包括指令在 VH 之间共享相同的设置。

相关内容