【问题标题】:Apache Failed to Start - Trying to find key for HTTP siteApache 无法启动 - 试图找到 HTTP 站点的密钥
【发布时间】: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 触发错误。
  • 我的猜测是您的抽象配置与您的实际配置抽象了太多,即您的实际配置包含一个在抽象配置中不可见的问题。在没有实际配置的情况下很难指出实际错误。

标签: apache http ssl https


【解决方案1】:

这最终是由于有一些虚拟主机对,其中一个 *:80 虚拟主机用于 http 站点,而对应的 *:443 虚拟主机用于将 https 重定向到 http 的同一站点。我在 *:443 重定向虚拟主机中添加了“SSLEngine off”,并且 SSL mod 停止为匹配的 *:80 站点寻找证书/密钥。 (删除 *:443 重定向主机也可以,并允许 Apache 启动,但随后该重定向也消失了。)

【讨论】:

    猜你喜欢
    • 2021-09-03
    • 2018-04-28
    • 2015-02-21
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2018-10-29
    • 2018-05-04
    • 2015-08-24
    相关资源
    最近更新 更多