我正在使用OpenSSL,并且需要健全的默认CA列表。我正在使用Mozilla的受信任CA列表,如bundled by cURL。但是,我需要拆分这 bundle CA证书,因为OpenSSL documentation says:
例如,直接使用ca-bundle.crt
文件可以正常工作:
openssl-1.0.1g> ./apps/openssl s_client -connect www.google.com:443 -CAfile /home/user/certs/ca-bundle.crt
...
Verify return code: 0 (ok)
---
DONE
但是指定包含
ca-bundle.crt
文件的目录不起作用:openssl-1.0.1g> ./apps/openssl s_client -connect www.google.com:443 -CApath /opt/aspera/certs
Verify return code: 20 (unable to get local issuer certificate)
---
DONE
我认为这是因为我的文件夹未遵循文档要求的内容(即,目录包含PEM格式的CA证书,每个文件都包含一个证书,以哈希值命名)。我的目录只有一 bundle 证书。
如何拆分我的证书 bundle 包,以遵守OpenSSL的要求,即每个证书都位于单独的文件中?如果也可以进行哈希处理,则可以得到一些好处(尽管如果需要,我可以编写一个脚本来完成所有证书都在单独文件中的工作)。
最佳答案
您可以在适当的目录中使用awk
拆分 bundle 包,如下所示:
awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ca-bundle.pem
然后,通过运行OpenSSL随附的
c_rehash
实用工具来创建OpenSSL所需的链接:c_rehash .
注意:在非linux平台上使用'gawk'-如上所述,它依赖于GNU特定功能。
关于linux - 如何将CA证书捆绑包拆分为单独的文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23644473/