我正在使用 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