[英]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);
加載 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());
CertPathValidator certPathValidator = CertPathValidator.getInstance("PKIX"); PKIXParameters pkixParameters = new PKIXParameters(keystore); //pkixParameters.setRevocationEnabled(false); PKIXParameters certPathValidatorResult = certPathValidator.validate(certPath, pkixParameters);
我假設如果這不是一個有效的鏈,它會拋出一個異常。 此驗證會檢查過期的證書、有效的公鑰嗎?
我還需要能夠找到證書的 OCSP 狀態或檢查它是否被撤銷>? 如何使用密碼學 API 來完成
是否推薦使用充氣城堡而不是 API? Bouncy castle 是否可以檢查證書的 CRL 和 OCSP 狀態?
感謝您提前提供的所有指示和幫助。 欣賞它。
此致
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());
x509Certificates.get(1).getNotBefore()
和
x509Certificates.get(1).getNotAfter()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.