AH01896:无法确定 Apache v2.4 SSLCACertificatePath 指令中可接受的客户端身份验证 CA 证书列表

AH01896:无法确定 Apache v2.4 SSLCACertificatePath 指令中可接受的客户端身份验证 CA 证书列表

我正在使用 Apache v2.4

在 ssl.conf 文件中我使用SSLCA证书路径带有参数的指令,例如/var/dat/certificates/ssl.intermediate其中 ssl.intermediate 是一个具有以下权限的空目录:

drwxr-xr-x  2 root   root 4096 Oct 23 23:10 ssl.intermediate

现在,当我重新启动 apache 时,我在 ssl 错误日志中收到以下错误:

[2014 年 10 月 23 日星期四 23:11:08.706227] [ssl:info] [pid 17421] AH02200:正在加载 SSL 感知服务器“somehost.com:443”的证书和私钥

[2014 年 10 月 23 日星期四 23:11:08.706726] [ssl:info] [pid 17421] AH01914:为 SSL 协议配置服务器 somehost.com:443

[2014 年 10 月 23 日星期四 23:11:08.706831] [ssl:emerg] [pid 17421] AH01896:无法确定客户端身份验证可接受的 CA 证书列表

提前致谢

答案1

并不是说显而易见,但如果您不接受客户端证书(否则该目录不会为空,对吗?),为什么不直接从配置中删除有问题的指令呢?

答案2

我发现 Apache HTTP Server 2.4 破坏了 SSLCADNRequestFile 指令。这允许定义可接受 CA 的列表,而不是用于验证证书的 CA 列表。当根 CA 使更多 CA 可接受时,这是必需的。SSLCADNRequestFile 允许指定服务器将接受其颁发的证书的严格中间 CA。

SSACACertificateFile 列表仍将用于验证客户端实际使用的证书链(因此被视为可以使用)。

答案3

我的问题是SSLCACertificatePath里面没有公共证书

答案4

您必须为该文件创建一个哈希符号链接:

https://httpd.apache.org/docs/current/mod/mod_ssl.html#sslproxycacertificatepath

此目录中的文件必须采用 PEM 编码,并通过哈希文件名访问。因此,通常您不能只将证书文件放在那里:您还必须创建名为 hash-value.N 的符号链接。并且您应始终确保此目录包含适当的符号链接。

因此目录至少应该看起来像

drwxr-xr-x  2 root   root 4096 Oct 23 23:10 ssl.intermediate
drwxr-xr-x  2 root   root 4096 Oct 23 23:10 ae002233.0 -> ssl.intermediate

相关内容