在 Apache VirtualHosts 上配置 SSL 证书时出现问题

在 Apache VirtualHosts 上配置 SSL 证书时出现问题

我正在尝试从运行 RHEL6 的单个 IP 服务器运行多个 SSL 连接。我已成功在 SSL 上配置了一个域,但是当我尝试添加第二个域时,Apache 无法重新启动。注释掉第一个域,以便只有新域在运行,这并不能解决问题。

我的配置如下:

NameVirtualHost *:80
NameVirtualHost 192.168.0.10:443

# Domain 1 Works fine
<VirtualHost 192.168.0.10:443>
 ServerName domain1.org.uk
 DocumentRoot /home/domain1/public_html
 <Directory "/home/domain1/public_html">
     allow from all
     Options FollowSymLinks
 </Directory>
 SSLEngine on
 SSLCertificateFile /home/domain1/certs/domain1.org.uk.crt
 SSLCertificateKeyFile /home/domain1/certs/domain1.org.uk.key
 SSLCertificateChainFile /home/domain1/certs/gs_intermediate_ca.crt
</VirtualHost>

# Domain 2 kills apache
<VirtualHost 192.168.0.10:443>
 ServerName domain2.org.uk
 DocumentRoot /home/domain2/public_html
 <Directory "/home/domain2/public_html">
     allow from all
     Options FollowSymLinks
 </Directory>
 SSLEngine on
 SSLCertificateFile /home/domain2/certs/domain2.org.uk.crt
 SSLCertificateKeyFile /home/domain2/certs/domain2.org.uk.key
 SSLCertificateChainFile /home/domain2/certs/gs_intermediate_ca.crt
</VirtualHost>

当我查看 /var/log/httpd/error_log 时,当我为域 2 打开 SSL 并重新启动 apache 时,我得到了这个

[notice] caught SIGTERM, shutting down]
[notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

查看 /var/log/httpd/ssl_error_log 时

[error] Failed to configure CA certificate chain

如果我将链证书的行从 SSLCertificateChainFile 更改为 SSLCACertificateFile,apache 将会顺利重新启动,但是当我在任何浏览器中访问 domain2 时,我会出现 SSL 连接错误。

任何帮助将非常感激。

编辑

好的,有两件事:

1.) 已启用第二块网卡,HTTPS 在 192.168.0.11 上监听,http 在 192.168.0.10 上监听

2.) 已跑:

openssl verify -verbose -purpose sslserver -CAfile gs_intermediate_ca.crt domain2.org.uk.crt

无法加载证书

我现在得到了

unable to load certificate
140685974771528:error:0906D066:PEM routines:PEM_read_bio:bad end line:pem_lib.c:802:

答案1

您是否绝对确定您的 domain2 gs_intermediate_ca.crt 是正确的?Apache 错误日志行显示您的问题就出在这里。

SSLCACertificateFile 指示用于指示哪个客户您处理的证书。因此,它可能没有像 那样严格地验证该文件SSLCertificateChainFile。因此,错误不会阻止 Apache 启动,但会导致 SSL 错误。更有理由假设问题出在该链文件上。

很有可能,链文件要么 A)格式不正确,要么 B)对该特定证书无效。(例如:可能是其他域的链)您可以尝试使用openssl s_client -connect domain2.org.uk:443列出在 SSL 交换期间发放的证书。

相关内容