配置 SSL 主机以便能够访问多个域上的 HTTP / HTTPS?

配置 SSL 主机以便能够访问多个域上的 HTTP / HTTPS?

我在 Apache 服务器 (CentOS) 上配置多个 SSL 主机时遇到问题。最初我以为问题只在于一个 IP,所以一旦发现这个问题,我就要求我们的服务器提供商添加另一个 IP,他们也这样做了。

但是,我仍然遇到问题。我们希望能够对我们的两个域 domain1.com 和 domain2.com 以及各个子域进行 http 和 https 访问。

我在机器上有证书、密钥、中级证书(针对两个域),这些似乎都没有问题。

情况是,所有 HTTP 站点都正常工作,并且第一个 SSL 域正在工作,但是当我尝试通过 HTTPS 访问第二个域时,我收到安全错误(说证书错误,因为显示域 1 的证书!)。

此外,提供给 domain2 的页面不是正确的 oes(即不是 DocumentRoot 所说的内容!)。看起来好像它默认为所有域/ip 的第一个 ssl 配置。

配置文件:

THis is an excerpt from httpd.conf
####
NameVirtualHost **.**.**.27:80

<VirtualHost **.**.**.27:80>
    DocumentRoot /var/www/html/ADDIR
    ServerName domain1.com
    ErrorDocument 404 /var/www/html/404.html
</VirtualHost>

 # # There are other virtualhosts for other ServerNames & DocumentRoots too but they're otherwise identical to above. ###

<Location "/usage">
</Location>

NameVirtualHost **.**.**.41:80

<VirtualHost **.**.**.41:80>
DocumentRoot /var/www/html/SOC
ServerName domain2.com
</VirtualHost>

# # #
This is an excerpt from ssl.conf

<VirtualHost **.**.**.27:443>
DocumentRoot "/var/www/html/ADDIR/"
ServerName domain1.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

#certificates
SSLCertificateFile /ssl/server.crt
SSLCertificateKeyFile /ssl/server.key
SSLCACertificateFile /ssl/intermediate.crt

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
 SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
        nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>                                  

<VirtualHost **.**.**.41:443>
     SSLEngine On
     SSLCertificateFile /ssl/SD/server.crt
     SSLCertificateKeyFile /ssl/SD/server.key
     SSLCACertificateFile /ssl/SD/intermediate.crt

     ServerAdmin [email protected]
     ServerName domain2.com
     DocumentRoot /var/www/html/SOC/
</VirtualHost>

答案1

仅比较两个 https 虚拟主机的定义,我就看到了差异。

在您的 .27 虚拟主机上,您有

服务器名称 domain1.com:443

SSL协议全部-SSLv2

SSLCipherSuite 全部:!ADH:!导出:!SSLv2:RC4+RSA:+高:+中:+低

在你的 .41 Virtualhost 上,你有

服务器名称 domain2.com

我承认我并不了解所有的 SSL 配置,所以这可能是我所期望的。但是你有一个正常工作(我假设是 .27 主机),而另一个设置不同。

相关内容