簡體   English   中英

使用 java 進行證書鏈驗證,檢查吊銷和 OCSP 狀態

[英]Certificate chain validation using java, checking revokation and OCSP status

我是 PKI 世界的新手,一般是證書。 我正在編寫一個需要驗證證書鏈的服務。

采取的一般做法如下

a) 從發送的數據生成證書列表

ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data);

CertPathValidatorResult certPathValidatorResult = null;
try {

  CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
  List<X509Certificate> x509Certificates =
      (List<X509Certificate>) certificateFactory.generateCertificates(byteArrayInputStream);

  CertPath certPath = certificateFactory.generateCertPath(x509Certificates);
  1. 加載 JDK 密鑰庫,如下所示 //Load the JDK's cacerts keystore file String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar) ; FileInputStream is = new FileInputStream(filename); KeyStore 密鑰庫 = KeyStore.getInstance(KeyStore.getDefaultType()); 字符串密碼 = "changeit"; keystore.load(is, password.toCharArray());

  2.  CertPathValidator certPathValidator = CertPathValidator.getInstance("PKIX"); PKIXParameters pkixParameters = new PKIXParameters(keystore); //pkixParameters.setRevocationEnabled(false); PKIXParameters certPathValidatorResult = certPathValidator.validate(certPath, pkixParameters);
  3. 我假設如果這不是一個有效的鏈,它會拋出一個異常。 此驗證會檢查過期的證書、有效的公鑰嗎?

  4. 我還需要能夠找到證書的 OCSP 狀態或檢查它是否被撤銷>? 如何使用密碼學 API 來完成

  5. 是否推薦使用充氣城堡而不是 API? Bouncy castle 是否可以檢查證書的 CRL 和 OCSP 狀態?

感謝您提前提供的所有指示和幫助。 欣賞它。

此致

  1. 沒錯,你可以使用 CertificateFactory 來加載證書鏈。
  2. 如果要驗證證書鏈,則不需要 KeyStore。 證書通過發出該證書的權威證書進行驗證。
    例如:
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(chain.getBytes());
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
List<X509Certificate> x509Certificates = (List<X509Certificate>) certificateFactory.generateCertificates(byteArrayInputStream);
x509Certificates.get(1).verify(x509Certificates.get(0).getPublicKey());
  1. 在這種情況下,如果您不知道根 ca,則可以使用它來驗證證書。
  2. 您可以使用
x509Certificates.get(1).getNotBefore()

x509Certificates.get(1).getNotAfter()
  1. 驗證證書的狀態很重要。
  2. 是的,BouncyCastle 是一個很棒的圖書館。

暫無
暫無

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

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