Apache 2.4 的 OpenSSL 服务失败,并显示“特定错误 函数不正确”

Apache 2.4 的 OpenSSL 服务失败,并显示“特定错误 函数不正确”

我从 Apache Lounge 下载了 Apache 2.4,并将其安装在 Windows 7 上作为开发服务器,运行良好。现在我尝试使用自签名证书的 SSL,但重新启动服务失败,并显示:

Apache2.4 服务因服务特定错误“功能不正确”而终止。

我记得如果您想使用 SSL,Apache 2.2 有一个特定的 OpenSSL 下载。Apache 2.4 也是这种情况吗?

还有什么可能导致该问题?

我已确认:

  1. 端口 80 和 443 可用
  2. LoadModule ssl_module modules/mod_ssl.so未注释
  3. Include conf/extra/httpd-ssl.conf也没有注释

答案1

我刚刚遇到了同样的问题。通过运行 httpd.exe 本身,我得到了以下输出:

AH00526: Syntax error on line 92 of C:/Apache24/conf/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you
need to load the appropriate socache module (mod_socache_shmcb?).

修复方法是取消注释 httpd.conf 中的以下行:

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

答案2

检查您的 Apache 错误日志。我遇到了这个错误,其中的错误消息是:

AH02572: Failed to configure at least one certificate and key for www.example.com:443  

这是在我的 conf/extra/httpd-ssl.conf 文件中,我最终注释掉了整个块

#<VirtualHost _default_:443>
#    ....
#</VirtualHost>

答案3

遇到了同样的问题,但我使用的是 ApacheHaus。CTarczon 建议运行 httpd.exe,这是一个很有帮助的建议,但我的问题与缺少 socache 模块无关。我收到一个错误,表明我两次打开了同一个端口。由于这是一个 https 问题,我知道它是端口 443(或者错误告诉我它是端口 443,记不太清楚)。我搜索了配置文件,发现“Listen 443”指令出现在两个配置文件中:httpd_ssl.conf 和 http_ahssl.conf。事实证明,我采纳了取消注释“Include conf/extra/httpd-ssl.conf”的建议。ApacheHaus 用“Include conf/extra/http_ahssl.conf”行替换了它。所以这是一个简单的修复,只需注释掉 http_ssl.conf 包含行。ApacheLounge 可能正在做类似的事情。当你第一次使用这些东西时,并不清楚它们是互斥的;其中一个,但不是两个。这在日志中没有显示为错误,从命令行运行 httpd.exe 是了解发生了什么事情的关键。

我还更改了服务器证书,而不是使用用于测试的 localhost 服务器证书。以下是位于 http_ahssl.conf 文件中的虚拟主机配置部分。

<VirtualHost _default_:443>
  SSLEngine on
  ServerName localhost:443
  #SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
  #SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
  SSLCertificateFile "${SRVROOT}/conf/ssl/myhost.crt"myhost.key"
  SSLCertificateKeyFile "${SRVROOT}/conf/ssl/myhost.key"
  DocumentRoot "${SRVROOT}/htdocs"
# DocumentRoot access handled globally in httpd.conf
    CustomLog "${SRVROOT}/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    <Directory "${SRVROOT}/htdocs">
    Options Indexes Includes FollowSymLinks
    AllowOverride AuthConfig Limit FileInfo
    Require all granted
    </Directory>
</virtualhost>

第一次运行它时,我得到了同样的错误“函数不正确”。但这次我在日志中得到了一条有意义的错误消息:

Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file C:/Apache/httpd/Apache24/conf/ssl/myhost.key)
Fatal error initialising mod_ssl, exiting.

这个问题很容易修复,并且修复方法已在以下位置详细记录:https://www.ssl247.com/kb/ssl-certificates/troubleshooting/apache/tn-5634-error-sslpassphrasedialog-not-supported-win32

我还要补充一点关于日志没有显示任何有意义的信息。首先,验证您的配置是否启用了日志模块。听起来您确实启用了,因为您说没有得到任何有意义的信息。第二件事是确保您的虚拟主机配置具有 CustomLog 配置行。这会告诉您 https 日志错误将发布到哪里。如果所有配置看起来都正确,那么我猜您在设置虚拟主机之前发生了一些错误,因此您没有收到任何详细的错误消息。在 Windows 事件查看器中,您可能会收到相当无意义的高级错误“不正确的功能”,但不会收到您想要更好地诊断实际问题的详细消息。

相关内容