Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 如何使用VirtualHost在同一台Apache2服务器上使用不同的证书?_Ssl_Apache2_Virtualhost_Pem - Fatal编程技术网

Ssl 如何使用VirtualHost在同一台Apache2服务器上使用不同的证书?

Ssl 如何使用VirtualHost在同一台Apache2服务器上使用不同的证书?,ssl,apache2,virtualhost,pem,Ssl,Apache2,Virtualhost,Pem,我从Gandi那里获得了域名www.mondomaine.fr的证书 但是对于sql.mondomaine.fr,我希望使用自签名SSL证书 如果我激活了sql.mondomaine.fr,那么www.mondomaine.fr使用的是自签名证书,而不是Gandiś证书 如果我取消激活sql。一切正常 如何管理不同证书的使用 第一个VirtualHost配置是为每个SSL VirtualHost配置的 谢谢你的帮助 以下是我的配置: 对于PHPMyAdmin: <VirtualHost *

我从Gandi那里获得了域名www.mondomaine.fr的证书 但是对于sql.mondomaine.fr,我希望使用自签名SSL证书

如果我激活了sql.mondomaine.fr,那么www.mondomaine.fr使用的是自签名证书,而不是Gandiś证书

如果我取消激活sql。一切正常

如何管理不同证书的使用

第一个VirtualHost配置是为每个SSL 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>

#Chemin vers les données网站
DocumentRoot/usr/share/phpmyadmin
ServerName sql.mondomaine.fr
斯伦金安
SSLCertificateFile/etc/apache2/ssl/phpmyadmin.pem
对于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>

服务器名www.mondomaine.fr
DocumentRoot/var/www/mondomaine/
CustomLog/var/log/apache2/secure\u access.log组合
斯伦金安
SSLCertificateFile/etc/ssl/mondomaine.fr.crt
SSLCertificateKeyFile/etc/ssl/mondomaine.fr.key
SSLCACertificateFile/etc/ssl/GandiStandardSSLCA.pem
SSLVERIFYCLENT无

配置是正确的,因为如果第一个VirtualHost读取为PHPMyAdmin.pem ModSSL,则使用此虚拟主机;如果第一个VirtualHost读取为mondomaine.fr.crt,则Apache使用此虚拟主机。

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

另一方面,您可以使用自己的Certificate,您只需要确定在创建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>

服务器名www.mondomaine.fr
#甘地证书
serverName sql.mondomaine.fr
#你自己的证书

您遇到了HTTP over SSL的一般性问题-当客户端连接时,它会使用host:HTTP头指定要连接到哪个主机,但这仅在SSL握手(出示证书时)完成后才会出现。TLS的最新版本支持扩展(RFC 4366中指定),该扩展允许客户端指定在SSL握手期间要连接的主机,具体目的是支持VHOST;引用RFC:

“”“ TLS不提供一种机制让客户端告诉服务器 它正在联系的服务器的名称。客户端可能需要该名称 提供此信息以方便与的安全连接 在单个基础上托管多个“虚拟”服务器的服务器 网络地址。 “”“

据维基百科称,Firefox、Opera、IE、Chrome和Safari的最新版本支持此扩展;其他客户仍然不发送分机,而你在那里运气不好。您还必须至少使用TLS1.1来启用扩展支持


关于如何使用Apache设置它,有一些介绍;根据您的本地设置,您可能需要使用特定选项重建OpenSSL和/或Apache。

OMG!!这意味着如果你在同一台服务器上有两个网站,你不能为每个网站都有一个文件?是否可以将多个pem文件连接在同一个文件中,以便在ssl握手期间发送所有内容,让浏览器选择其中一个;SSL握手仅支持发送单个证书,而不考虑。然而,SNI扩展允许服务器计算出客户机希望得到哪一个;否则,正如您所注意到的,Apache将始终使用您在配置文件中设置的第一个证书,因为没有SNI,它无法在SSL握手开始时找到它。