簡體   English   中英

從p12文件中以編程方式獲取CA證書並訂購證書列表?

[英]Get CA certificates from p12 file programmatically and order certificate list?

經過大量搜索,我沒有找到如何使Java代碼中的以下命令等效:

openssl pkcs12 -cacerts -in /path/to/file.p12 -noout

僅從此p12或openssl pkcs12 -clcerts -in /path/to/file.p12 -noout中獲取ca證書以獲得證書

在Java中,我加載了file.p12,因此所有這些證書都存儲在PKCS12密鑰庫中,但無法區分哪個是CA證書,哪個是簡單的證書。 怎么做 ?

(在我的p12中,我擁有已簽名的證書和N CA證書:CA 2已簽署證書,CA 3已簽署了CA 2證書...,CA N已簽署了CA N-1證書)

2)以同樣的方式的另一個問題:是否有一種方法來訂購x509證書列表以獲取(ca 1,... ca N),我使用了:

CertificateFactory certFact = CertificateFactory.getInstance("X.509");
CertPath path = certFact.generateCertPath(myCertifList);

但是,該清單必須已經訂購,與我希望的相反。

3)是否保證全鏈證書訂單? 例如,如果讓我們進行加密以不依賴實際證書順序的方式更改其策略並更改構建鏈和全鏈的方式怎么辦? 非常感謝您的幫助!

一個P12發放實用的方法是:用一個單一的PrivateKey和相應的Certificate Chain (通用互聯網標准)。

您可以在以下鏈接中了解有關此內容的更多信息: PKCS#12信任鏈中間CA。

通常(幾乎所有時間),用戶證書將是鏈中的第一個證書(最重要),其次是最不重要的證書(子CA和CA,最后是CA)。

幾乎所有的軟件和庫都遵循這種方法。

因此,可以肯定地說證書鏈是有序的( 但是,有可能鏈不完整,您只能擁有用戶的證書,或者在子CA證書之后可能沒有CA證書。)在很大程度上取決於發布P12 /證書鏈的CA )。 但是,您會在第一個(第零個)位置找到用戶的證書。

如果您需要確保鏈條完整且有序,則可以使用自己的防御方法來執行此操作。 您可以根據證書的SubjectDNIssuerDN字段來標識證書的類型(CA,SubCA或用戶)。

如果SubjectDN等於IssuerDN ,則它是CA證書,然后標識下一個證書(SubCA);如果證書的IssuerDN等於CA的SubjectDN ,則它是鏈中的下一個證書,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM