httpd中的SSLCACertificatePath

sha*_*ves 5 apache ssl-certificate x509certificate

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

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

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

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

    openssl x509 -noout -hash -in NAME-OF-CA-FILE
    
    Run Code Online (Sandbox Code Playgroud)

    得到哈希

  3. 创建了指向名为HASH.X的pem文件的sym链接(如fa0db041.0,fa0db041.1等)

当我将httpd指向该目录时,当我尝试进行客户端证书验证时,我最终得到以下错误:

AH02039: Certificate Verification: Error (20): unable to get local issuer certificate
AH02039: Certificate Verification: Error (19): self signed certificate in certificate chain
Run Code Online (Sandbox Code Playgroud)

所以它就像是找不到中间体和根.

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

有什么建议?

tet*_*ram 5

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

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

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

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