【发布时间】:2018-06-05 21:54:31
【问题描述】:
我有一个 LAMP 服务器,HTTP 站点位于 80,HTTPS 站点位于 443。尝试启动 Apache 时,我收到以下错误:
[Tue Jun 05 13:15:36.179316 2018] [ssl:emerg] [pid 3100] AH02572: Failed to configure at least one certificate and key for blah.site.us:80
[Tue Jun 05 13:15:36.179386 2018] [ssl:emerg] [pid 3100] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Tue Jun 05 13:15:36.179391 2018] [ssl:emerg] [pid 3100] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration Failed
它正在尝试为不应使用 SSL 的站点查找证书/密钥对(即,如果这是我的 443 个站点之一并且找不到密钥,则此错误是有意义的,但它应该t 甚至正在寻找 :80 站点的证书/密钥)。
Apache 在哪里被告知它应该尝试将 SSL 应用于该站点?我的 ssl.conf 中有“Listen 443 https”,我的虚拟主机看起来像:
<VirtualHost *:80>
ServerName some.example.com
DocumentRoot /correctpath
</VirtualHost>
<VirtualHost *:443>
ServerName secured.example.com
DocumentRoot /correctpath
SSLEngine on
SSLCertificateFile /correctpath
SSLCertificateKeyFile /correctpath
</VirtualHost>
【问题讨论】:
-
确保您在别处没有
SSLEngine on,包括在default配置文件中。通过二分法尝试,注释所有VirtualHost块,但一个,运行 Apache,查看它是否启动,如果是,则通过取消注释另一个VirtualHost进行下一步,如果没有,您已找到哪个VirtualHost触发错误。 -
我的猜测是您的抽象配置与您的实际配置抽象了太多,即您的实际配置包含一个在抽象配置中不可见的问题。在没有实际配置的情况下很难指出实际错误。