安装新 SSL 证书时遇到问题(Apache2 虚拟主机)

安装新 SSL 证书时遇到问题(Apache2 虚拟主机)

我在尝试为 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_loghttpd无法启动:

您在标准 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。

相关内容