如何让我的 Ubuntu 服务器托管各种支持 SSL 的网站?

如何让我的 Ubuntu 服务器托管各种支持 SSL 的网站?

实际上,我已经搜索了几个小时,但还是无法让它工作。我遇到的主要问题是两个网站中只有一个可以工作。

我有一个网站,主要用于发布一款应用程序。网站名为 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)

相关内容