RHEL / Apache ssl.confconfiguration问题

我们有多个子域,每个都有自己的httpd.conf中的虚拟主机条目,以及ssl.conf中的支持https的那些子域。 我们的主要www子域有一个与之相关的GoDaddy证书。 我现在在我们的开发环境(“api.bulbstorm.com”)中configuration的子域有一个ssl.conf虚拟主机条目,如下所示:

<VirtualHost 172.16.247.153:443> DocumentRoot "/var/www/api" ServerName api.bulbstorm.com:443 ErrorLog logs/api-error_log CustomLog logs/api-access_log common LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /var/www/certs/api/server.crt SSLCertificateKeyFile /var/www/certs/api/server.key <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> <Directory "/var/www/api"> Options +FollowSymLinks RewriteEngine On AllowOverride All Order allow,deny Allow from all </Directory> php_value include_path "/var/www/inc" 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> 

… / var / www / certs / api /中的crt&key文件是使用openssl根据这里find的指令生成的。

api子域最初指向www子域的godaddy证书。 但是,尽pipe我已经将与api子域关联的虚拟主机条目更改为指向自签名证书/密钥对(并已重新启动httpd,完全清除了与以前的godaddy cert例外相关的浏览器设置),但浏览器仍然抛出警告,说该证书是为www域 。 当我看着浏览器正在拉的证书,看起来他们仍然得到了godaddy证书。

在ssl.conf文件中有更高的那些行:

 SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 

此证书/密钥对与www子域的虚拟主机条目中引用的godaddy证书/密钥对不同,如下所示:

 SSLCertificateFile /etc/www.bulbstorm.com_ssl/www.bulbstorm.com.crt SSLCertificateKeyFile /etc/www.bulbstorm.com_ssl/www.bulbstorm.com.key SSLCertificateChainFile /etc/www.bulbstorm.com_ssl/gd_intermediate_bundle.crt 

任何人都可以解决我遇到的问题,将不胜感激。

确保api.bulbstorm.com和www.bulbstorm.com虚拟主机位于不同的IP地址上。 这里是我的vhostconfiguration2个不同的子域与独特的SSL证书:

/usr/local/etc/apache22/Includes/login.domain.com.ssl.conf

 Listen 10.0.0.152:443 <VirtualHost 10.0.0.152:443> ServerAdmin [email protected] DocumentRoot /web0/cloud/login.domain.com/current ServerName login.domain.com ServerAlias www.login.domain.com login.domain.com LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog /var/log/www/login.domain.com-access_log ErrorLog /var/log/www/login.domain.com-error_log <DIRECTORY /web0/cloud/login.domain.com/current> Allow from All OPTIONS Indexes Includes ExecCGI FollowSymLinks AllowOverride ALL </DIRECTORY> IndexOptions FancyIndexing AddType application/x-httpd-php .html SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/login.domain.com.crt" SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/login.domain.com.key" SSLCertificateChainFile "/usr/local/etc/apache22/ssl.crt/comodo.ca-bundle" BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost> 

/usr/local/etc/apache22/Includes/admin.domain.com.ssl.conf

 Listen 10.0.0.151:443 <VirtualHost 10.0.0.151:443> ServerAdmin [email protected] DocumentRoot /web0/cloud/admin.domain.com/current ServerName admin.domain.com ServerAlias www.admin.domain.com admin.domain.com LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog /var/log/www/admin.domain.com-access_log ErrorLog /var/log/www/admin.domain.com-error_log <DIRECTORY /web0/cloud/admin.domain.com/current> Allow from All OPTIONS Indexes Includes ExecCGI FollowSymLinks AllowOverride ALL </DIRECTORY> IndexOptions FancyIndexing SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/admin.domain.com.crt" SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/admin.domain.com.key" SSLCertificateChainFile "/usr/local/etc/apache22/ssl.crt/comodo.ca-bundle" BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost> 

正如amishgeek指出的那样,ping确认:

     Microsoft Windows [版本6.0.6002]
    版权所有(c)2006 Microsoft Corporation。 版权所有。

     C:\ Users \ Owner> ping bulbstorm.com

    用32字节的数据Pinging bulbstorm.com [216.139.247.153]
    控制-C
     ^ C
     C:\ Users \ Owner> ping www.bulbstorm.com

    用32字节的数据Ping www.bulbstorm.com [216.139.247.153]
    控制-C
     ^ C
     C:\ Users \ Owner> ping api.bulbstorm.com

    用32字节的数据Ping api.bulbstorm.com [216.139.247.153]
    控制-C
     ^ C
     C:\用户\所有者>

你有两个主机相同的IP地址。 SSL发生在主机名发送之前。 主机名通过HTTP请求中的Host:头发送到Apache。 在OpenSSL 1.0中,将会支持TLS证书 ,这可能有助于共享IP,但这是另一场球赛,还有更多的谷歌search 。

链接:

  • 来自另一个SSL证书颁发者PositiveSSL的链接
  • 来自疑难解答相同问题的人的条目 。
  • 而且, 从马嘴(Apache) : http : //httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts

解决方法:

根据TLS上的Wikipedia条目 :您应该调整您的证书以支持多个主题替代名称 (GoDaddy具有“ UCC Certs ”),或获得通配符证书。

根据您的用户群,您可以要求用户支持CACert根证书,并从中获取subjectAltName证书 。 ( 实际上,它看起来像你当前的证书有一个subjectstown.com的名字,www.bulbstorm.com )。 这为您节省了$ 70.00每年。 把一个链接放在你的非SSL页面或者你的SSL页面上

您是否收到SSL浏览器错误?我们使用CACert SSL证书,请按照此链接下载他们的根证书到您的浏览器。

最后回答你的问题,这是如何生成一个自签名的SSL证书。

首先,这一行将生成一个私钥,用于生成证书签名请求(CSR)。

 openssl genrsa -des3 -out server.key 1024 

系统将提示您input密码。 该密码将encryption私钥。 这下一行将使用您的私钥生成CSR。

 openssl req -new -key server.key -out server.csr 

然后,系统会提示您input以下问题(如果您在生成私钥时select使用上述问题,则会提示您input密码)。

 Country Name (2 letter code) [GB]: State or Province Name (full name) [Berkshire]: Locality Name (eg, city) [Newbury]: Organization Name (eg, company) [My Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []: Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 

编辑:如果你生成一个自签名的testing证书,上面的Common Name字段是你想要把你的域名的地方(正如你想要的那样,即使用www如果你想要成为你使用的地址) 。 生成CSR后,您可以自行签署以下内容。

 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

然后,您将拥有您的私钥( server.key )和您的SSL证书( server.crt ),您可以使用上面用于其他证书的指令在Apache中进行安装。

我不确定这是否回答了任何有关显然不正确的证书发送到浏览器的问题,但是我build议可能会删除所有对VirtualHost指令之外的证书文件的引用,以查看它是否仍然发生,因为您只是每个IP地址真的能够拥有一个SSL主机,并且拥有多个SSLCertificateFile指令可能会产生不寻常的效果。