我正在尝试从运行 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 交换期间发放的证书。