OpenSSL 命令行 中间CA 证书链校验
问题描述:
通常情况下,我们使用这个命令写法,可以很方便地进行证书链验签动作。
openssl verify -CAfile ca.crt test.crt
但是,当我们使用的CA不是自签名证书时,就会报错:
unable to get local issuer certificate
可能会附带说明(OpenSSL3.0):No store loader found. For standard store loaders you need at least one of the default or base providers available. Did you forget to load them? Info: Global default library context
解决示例:


验签命令(示例):
openssl verify -partial_chain -trusted SubCA.crt cert.crt

说明:
1、命令信息
输入命令:openssl verify -help

2、为什么不能使用原来的那个命令?
官方文档指路:https://www.openssl.org/docs/man1.1.1/man1/verify.html
重点信息:
(1)原本的写法,要求CA链必须到达根证书,否则就报错。
(2)新的写法(解决示例),使用了 -trusted 告诉OpenSSL说这个中级CA是受信任的,然后使用了 -partial_chain 让OpenSSL接受在这次校验时我们提供的CA链只到中级CA而非到根证书。


如果你还想知道更多命令行相关的示例,可以看我的专栏:OpenSSL命令行实例
另外,如果你还希望用纯软的方式实现密码学相关的操作
c/c++ 的话就用OpenSSL官方库里的的方法
java的话,一般是使用Security库以及BC库来实现,我的github仓库https://github.com/17lhf/happyTest中有我关于依据这两个库进行密码学相关操作的示例(cryptology文件夹)或者这是我的B站专栏,有简单介绍JAVA密码学示例大集合,欢迎阅览。

