如何使用VirtualHost在相同的Apache2 Server 2上使用不同的证书?

时间:2009-10-10 15:52:42

标签: ssl apache2 virtualhost pem

我从Gandi获得了一个域名www.mondomaine.fr的证书 但对于sql.mondomaine.fr,我想使用自签名SSL证书。

如果我激活sql.mondomaine.fr,www.mondomaine.fr正在使用自签名证书而不是Gandiś证书。

如果我停用sql。一切正常。

如何管理不同证书的使用?

它接收了每个SSL VirtualHost的第一个VirtualHost配置。

感谢您的帮助。

这是我的配置:

对于PHPMyAdmin:

<VirtualHost *:443>
    # Chemin vers les données web
    DocumentRoot /usr/share/phpmyadmin

    ServerName sql.mondomaine.fr

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/phpmyadmin.pem
</VirtualHost>

对于mondomaine.fr

<VirtualHost *:443>
    ServerName www.mondomaine.fr
    DocumentRoot /var/www/mondomaine/
    CustomLog /var/log/apache2/secure_access.log combined

    SSLEngine on
    SSLCertificateFile /etc/ssl/mondomaine.fr.crt
    SSLCertificateKeyFile /etc/ssl/mondomaine.fr.key
    SSLCACertificateFile /etc/ssl/GandiStandardSSLCA.pem
    SSLVerifyClient None
</VirtualHost>

配置是正确的,因为如果第一个VirtualHost读取是PHPMyAdmin.pem,ModSSL使用这个,如果它是mondomaine.fr.crt第一个VirtualHost,Apache使用这个。

2 个答案:

答案 0 :(得分:2)

您正在遇到HTTP over SSL的一般问题 - 当客户端连接时,它使用Host:HTTP标头指定要连接到哪个主机,但只有之后 SSL握手(出示证书时)已完成。最新版本的TLS支持扩展(在RFC 4366中指定),允许客户端指定在SSL握手期间要连接的主机,具体支持vhosts;引用RFC:

“””    TLS没有为客户端提供告诉服务器的机制    它正在联系的服务器的名称。客户可能需要它    提供此信息以促进安全连接    在单个底层服务器上托管多个“虚拟”服务器的服务器    网络地址。 “”“

根据维基百科,最新版本的Firefox,Opera,IE,Chrome和Safari都支持此扩展程序;其他客户仍然不会发送扩展,你在那里运气不好。您还必须至少使用TLS 1.1来启用扩展支持。

关于如何使用Apache进行设置,有一些documentation;您可能必须使用特定选项重建OpenSSL和/或Apache,具体取决于您的本地设置。

答案 1 :(得分:0)

它取决于您如何创建证书。如果你只为www子域购买它不适用于sql。 你需要做的是让它允许任何子域,但是这些证书更贵。

另一方面,你可以使用你自己的证书,你只需要确定你在创建你的virtutalhost时放的是什么

<virtualhost XXX.XXX.XXX.XXX:443>
 serverName www.mondomaine.fr
 # Gandiś ceritificate
</virtualhost>

<virtualhost XXX.XXX.XXX.XXX:443>
 serverName sql.mondomaine.fr
 # your own certificate stuff
</virtualhost>