httpd中的SSLCACertificatePath

时间:2014-05-07 14:17:06

标签: apache ssl-certificate x509certificate

我正在尝试使用httpd中的SSLCACertificatePath指令指向用于客户端证书验证的根和中间体的集合。

我能够毫无困难地使用完整的,串联的PEM编码文件(使用SSLCACertificateFile指令),但我更愿意能够指向目录而不是构建一个大型文件。

我已按照httpd手册(和documented here)中的说明进行操作,包括对所有文件进行哈希处理,如下所示:

  1. 使用awk命令取出我的巨型pem文件并拆分所有单个证书(大约40个左右)
  2. 对于每个pem文件,运行:

    openssl x509 -noout -hash -in NAME-OF-CA-FILE
    

    获取哈希

  3. 创建了名为HASH.X的pem文件的sym链接(如fa0db041.0,fa0db041.1等)
  4. 当我将httpd指向该目录时,当我尝试进行客户端证书验证时,我最终得到以下错误:

    AH02039: Certificate Verification: Error (20): unable to get local issuer certificate
    AH02039: Certificate Verification: Error (19): self signed certificate in certificate chain
    

    所以它似乎没有找到中间体和根。

    同样,这在使用组合PEM时都有效。

    有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您是否确定您的apache进程有权读取文件夹中的文件?

当您使用SSLCACertificateFile时,该文件在apache启动期间以root权限加载。

当您使用SSLCACertificatePath时,启动时不会加载文件。

我遇到了同样的问题,并在文件夹上设置了正确的装备解决了它。