我正在尝试使用httpd中的SSLCACertificatePath指令指向用于客户端证书验证的根和中间体的集合。
我能够毫无困难地使用完整的,串联的PEM编码文件(使用SSLCACertificateFile指令),但我更愿意能够指向目录而不是构建一个大型文件。
我已按照httpd手册(和documented here)中的说明进行操作,包括对所有文件进行哈希处理,如下所示:
awk
命令取出我的巨型pem文件并拆分所有单个证书(大约40个左右)对于每个pem文件,运行:
openssl x509 -noout -hash -in NAME-OF-CA-FILE
获取哈希
当我将httpd指向该目录时,当我尝试进行客户端证书验证时,我最终得到以下错误:
AH02039: Certificate Verification: Error (20): unable to get local issuer certificate
AH02039: Certificate Verification: Error (19): self signed certificate in certificate chain
所以它似乎没有找到中间体和根。
同样,这在使用组合PEM时都有效。
有什么建议吗?
答案 0 :(得分:4)
您是否确定您的apache进程有权读取文件夹中的文件?
当您使用SSLCACertificateFile时,该文件在apache启动期间以root权限加载。
当您使用SSLCACertificatePath时,启动时不会加载文件。
我遇到了同样的问题,并在文件夹上设置了正确的装备解决了它。