SSL 无法在 Ubuntu Natty 和多个域的 apache 上运行

SSL 无法在 Ubuntu Natty 和多个域的 apache 上运行

在我的服务器上使用 SSL 时遇到了一些问题。我只需要将它用于此机器上的两个域中的一个。我有两个 IP,并且我正在使用 DNS 上的 A 记录将域指向不同的 IP。

这是我的httpd.conf:

NameVirtualHost XX.XX.XXX.X1:80
NameVirtualHost XX.XX.XXX.X2:80
NameVirtualHost XX.XX.XXX.X2:443

    <VirtualHost XX.XX.XXX.X1:80>
    ServerName domain1.com
    ServerAlias .*
    WSGIScriptAlias / /home/domain1/domain1.wsgi 
    </VirtualHost>

<VirtualHost XX.XX.XXX.X2:80>
        ServerName domain2.me
    DocumentRoot /var/www/domain2
</VirtualHost>

 <VirtualHost XX.XX.XXX.X2:443>

ServerName www.domain2.me

DocumentRoot /var/www/domain2
ServerAdmin [email protected]

SSLEngine ON

SSLCertificateFile /etc/apache2/ssl/domain2.me.ssl/domain2.me.crt

SSLCertificateKeyFile /etc/apache2/ssl/domain2.me.ssl/domain2.me.key

SSLCACertificateFile /etc/apache2/ssl/domain2.me.ssl/gd_bundle.crt

</VirtualHost>   

希望可以发现一些明显的错误。以下是两个要点的链接,其中包含我尝试过的其他配置。第一个只是尝试使用 apache 附带的 snakeoil 证书:

Snakeoil 证书

另一次失败的尝试类似于此处发布的尝试

基本上,当我拉起页面时,会出现“页面不可用”的情况https://www.domain2.me

提前致谢。

更新:问题是 iptables 没有配置为接受端口 443 上的流量。我接受 EightBitTony 的回答,因为在我修复 iptables 之后,他的配置就能完美运行。

答案1

这个设置对我来说很有效(并且它是默认的 Debian 东西,几乎没有变化)。

在 ports.conf 中

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

这和你的很相配。

然后,对于我的每个虚拟主机(非 SSL),

<VirtualHost *:80>

        ServerName domain.example:80
        DocumentRoot "/some/path/to/html"
        UseCanonicalName Off
        <Directory "/some/path/to/html">
            ... stuff ....
        </Directory>

</VirtualHost>

和 SSL

<VirtualHost *:443>

        ServerName ssl-domain.example:443
        UseCanonicalName Off
        DocumentRoot "/some/path/to/ssl-html"

        <Directory "/some/path/to/ssl-html">
           ... stuff ...
        </Directory>

        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

</VirtualHost>

我认为您应该使用UseCanonicalName Off,以便服务器根据客户端传递的详细信息生成 URL,这样它就可以获得正确的端口和名称。完整详细信息这里

最后,您需要确保相关的 SSL 模块已启用,我认为在您的情况下确实如此(但是为了完整性,在这里这样做)。

更新:除了监听正确的端口之外,您还需要确保 iptables 没有阻止或丢弃端口 443 上的 SSL 流量。

相关内容