OpenSSL 命令行 中間CA 證書鏈校驗(yàn)
問題描述:
通常情況下,我們使用這個命令寫法,可以很方便地進(jìn)行證書鏈驗(yàn)簽動作。
openssl verify -CAfile ca.crt test.crt?
但是,當(dāng)我們使用的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
解決示例:


驗(yàn)簽命令(示例):
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
重點(diǎn)信息:
(1)原本的寫法,要求CA鏈必須到達(dá)根證書,否則就報錯。
(2)新的寫法(解決示例),使用了 -trusted 告訴OpenSSL說這個中級CA是受信任的,然后使用了??-partial_chain 讓OpenSSL接受在這次校驗(yàn)時我們提供的CA鏈只到中級CA而非到根證書。


如果你還想知道更多命令行相關(guān)的示例,可以看我的專欄:OpenSSL命令行實(shí)例
另外,如果你還希望用純軟的方式實(shí)現(xiàn)密碼學(xué)相關(guān)的操作
c/c++?的話就用OpenSSL官方庫里的的方法
java的話,一般是使用Security庫以及BC庫來實(shí)現(xiàn),我的github倉庫https://github.com/17lhf/happyTest中有我關(guān)于依據(jù)這兩個庫進(jìn)行密碼學(xué)相關(guān)操作的示例(cryptology文件夾)或者這是我的B站專欄,有簡單介紹JAVA密碼學(xué)示例大集合,歡迎閱覽。