Apche2 多重 SSL 配置不起作用

Apche2 多重 SSL 配置不起作用

我在 apache2 上设置了两个 SSL 证书,但当我使用域输入时,第一个证书有效,当我使用服务器 ipaaddress 输入时,它显示与我在域上拥有的证书相同的证书。我已禁用默认和默认 SSL 虚拟主机。以下是我的虚拟主机:

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName example.com:443
    ServerAlias www.example.com:443
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/log/apache2/error-log.log
    CustomLog /var/log/apache2/custom-log.log common
    DirectoryIndex index.html index.php index.xhtml index.htm
    #Allow phpmyadmin /usr/share/phpmyadmin
    <Directory /usr/share/phpmyadmin>
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order deny,allow
        allow from all
    </Directory>
    <Directory />
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    <Directory /var/www/>
        Options FollowSymLinks MultiViews -Includes -ExecCGI -Indexes
        AllowOverride All
        Order allow,deny
        allow from all
        LimitRequestBody 104857600
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    SSLEngine on
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
    SSLCertificateFile /etc/apache2/ssl/first-ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/first-ssl.key
    SSLCertificateChainFile /etc/apache2/ssl/first-ssl.crt
</VirtualHost>


<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName 188.226.208.247
    DocumentRoot /var/www/
    SSLEngine on
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
    SSLCertificateFile /etc/apache2/ssl/second-ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/second-ssl.key
</VirtualHost>  

答案1

正如在Apache 常见错误配置 wiki 站点

“...由于 SSL 的性质,建立 SSL 连接时不会使用主机信息。Apache 将始终使用默认虚拟主机的证书,该证书是基于名称的虚拟主机的第一个定义的虚拟主机。 虽然这并不意味着您将永远无法访问第二个虚拟主机,但这确实意味着您的用户在尝试访问 some.domain2.com 时始终会收到证书不匹配警告...”

来自阿帕奇文档

“...原因是 SSL 协议是一个封装 HTTP 协议的单独层。因此 SSL 会话是一个单独的事务,发生在 HTTP 会话开始之前。服务器在 IP 地址 X 和端口 Y(通常为 443)上接收 SSL 请求。由于 SSL 请求不包含任何 Host: 字段,服务器无法决定使用哪个 SSL 虚拟主机。通常,它只是使用它找到的第一个与指定的端口和 IP 地址匹配的虚拟主机。...”

一个 IP 地址可以拥有多个 SSL 证书,信噪比(服务器名称指示)但仅限于最新版本的 Apache 和 OpenSSL(Apache v2.2.12 和 OpenSSL v0.9.8j)。

简而言之:

如果您想为虚拟主机使用不同的 SSL 证书,那么您需要为每个虚拟主机提供不同的 IP 地址或使用 SNI。

答案2

请检查为哪个域名购买的第二个 SSL,并且请输入域名而不是 IP 地址。

ServerName 188.226.208.247 

change to

ServerName domainname .

相关内容