我在尝试为 Apache2 安装新的 SSL 证书时遇到了问题。我们的常规流量在端口 80 上运行,SSL 在 443 上运行。
我修改了httpd配置文件,仅重命名/etc/httpd/conf/2009certs/
为/etc/httpd/conf/2010certs/
:
<VirtualHost ServerIP:443>
# This parameter already existed as-is
SSLEngine on
# These are the parameters I changed (already existed w/ diff paths.)
SSLCertificateFile /etc/httpd/conf/2010certs/server.crt
SSLCertificateKeyFile /etc/httpd/conf/2010certs/server.key
SSLCertificateChainFile /etc/httpd/conf/2010certs/intermediate.pem
SSLCACertificateFile /etc/httpd/conf/2010certs/gs_root.pem
# Other parameters here; ServerAdmin, DocumentRoot, ServerName, ErrorLog, etc....
</VirtualHost>
存在另一个 VirtualHost 块*:80
,但未对该区域进行任何更改。
保存后httpd配置文件使用新的证书路径,注释掉旧的 2009 路径,并尝试重新启动 apache,我得到以下内容/var/log/httpd/error_log
但httpd
无法启动:
您在标准 HTTPS(443) 端口上配置了 HTTP(80)!
除了证书路径外,没有任何变化,更改后问题消失httpd配置文件重新使用旧证书。
这可能是什么原因造成的?
答案1
问题最终是由于 RSA 私钥文件上存在密码短语服务器密钥—— Apache 启动脚本未配置为提供一个。
我不太清楚为什么会出现上述错误信息。我猜想当 apache 无法读取 SSL 私钥文件并且无法在 443 上以 HTTPS 启动时,它会在端口 80 上回退到不同的 VirtualHost 配置。
答案2
我也遇到了这个问题,但问题出在部分中缺少“ServerName”指令。我建议尝试对配置文件进行以下修改:
<VirtualHost ServerIP:443>
ServerName host.domain
# This parameter already existed as-is
SSLEngine on
# These are the parameters I changed (already existed w/ diff paths.)
SSLCertificateFile /etc/httpd/conf/2010certs/server.crt
SSLCertificateKeyFile /etc/httpd/conf/2010certs/server.key
SSLCertificateChainFile /etc/httpd/conf/2010certs/intermediate.pem
SSLCACertificateFile /etc/httpd/conf/2010certs/gs_root.pem
# Other parameters here; ServerAdmin, DocumentRoot, ServerName, ErrorLog, etc....
</VirtualHost>
第三行:Servername host.domain
应添加并server.domain
替换为您的网站的实际主机名和域。
答案3
我遇到了类似的问题,但原因是其中一个虚拟主机的域名解析为不同服务器的 IP。