实际上,我已经搜索了几个小时,但还是无法让它工作。我遇到的主要问题是两个网站中只有一个可以工作。
我有一个网站,主要用于发布一款应用程序。网站名为 atajosapp.com 。
atajosapp.com 将有三个主要网站:
- www.atajosapp.com <- 应用程序的主页。
- auth.atajosapp.com <- 我的 API 的登录端点(需要 SSL)
- api.atajosapp.com <- 我的 API 的主要端点(需要 SSL)。
如果您尝试访问 api.atajosapp.com,它会起作用。它会抛出 403 错误和 JSON 输出,但这完全是故意的。
但是,如果您尝试访问 auth.atajosapp.com,该网站根本无法加载。Chrome 抱怨道:
The webpage at https://auth.atajosapp.com/ might be temporarily down or it may have moved permanently to a new web address. Error code: ERR_TUNNEL_CONNECTION_FAILED
但该网站确实在那里。
如果您尝试访问 www.atajosapp.com 或任何其他 HTTP 网站,它都可以正常连接。它似乎只是不喜欢处理多个 HTTPS 网站。
api.atajosapp.com 的 VirtualHost 如下所示:
<VirtualHost *:443>
DocumentRoot /var/www/api.atajosapp.com
ServerName api.atajosapp.com
SSLEngine on
SSLCertificateFile /certificates/STAR_atajosapp_com.crt
SSLCertificateKeyFile /certificates/star_atajosapp_com.key
SSLCertificateChainFile /certificates/PositiveSSLCA2.crt
</VirtualHost>
auth.atajosapp.com 看起来非常相似:
<VirtualHost *:443>
DocumentRoot /var/www/auth.atajosapp.com
ServerName auth.atajosapp.com
SSLEngine on
SSLCertificateFile /certificates/STAR_atajosapp_com.crt
SSLCertificateKeyFile /certificates/star_atajosapp_com.key
SSLCertificateChainFile /certificates/PositiveSSLCA2.crt
</VirtualHost>
现在我找到了很多讨论可能解决方案的网站。一开始,我收到这样的消息:
_default_ VirtualHost overlap on port 443, the first has precedence
但经过几个小时的谷歌搜索,我设法通过编辑 apache2.conf 和 ports.conf 解决了这个问题。这是我添加到 ports.conf 的最后一件事:
<IfModule mod_ssl.c>
NameVirtualHost *:443
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
NameVirtualHost *:443
Listen 443
</IfModule>
不过,目前只有 api.atajosapp.com 和 www.atajosapp.com 可以正常工作。我仍然无法访问 auth.atajosapp.com。当我检查错误日志时,我看到了以下内容:
Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
我不知道还能做些什么才能让这两个网站正常工作。我从 Comodo 购买了一张据说可以保护 *.atajosapp.com 的通配符 SSL 证书,所以经过几个小时的尝试和谷歌搜索,我不知道哪里出了问题。
任何帮助都将不胜感激。
编辑:我刚刚运行了apachectl -t -D DUMP_VHOSTS
命令,这是输出。不太明白……:
root@atajosapp:/# apachectl -t -D DUMP_VHOSTS
apache2: Could not reliably determine the server's fully qualified domain name, using atajosapp.com for ServerName
[Thu Nov 07 02:01:24 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443 is a NameVirtualHost
default server api.atajosapp.com (/etc/apache2/sites-enabled/api.atajosapp.com:1)
port 443 namevhost api.atajosapp.com (/etc/apache2/sites-enabled/api.atajosapp.com:1)
port 443 namevhost auth.atajosapp.com (/etc/apache2/sites-enabled/auth.atajosapp.com:1)
*:80 is a NameVirtualHost
default server atajosapp.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost atajosapp.com (/etc/apache2/sites-enabled/000-default:1)