/ / जावा में PEM- स्वरूपित फ़ाइल से कई X.509 प्रमाणपत्र निकालें - जावा, एसएसएल, प्रमाण पत्र, बाउंससाइक्ल, एक्स 509

जावा में जावा-एसएसएल, प्रमाणपत्र, बाउंसीकैसल, x509 में पीईएम-स्वरूपित फ़ाइल से एकाधिक X.50 9 प्रमाण पत्र निकालें

मेरे पास एक विधि है जो किसी दिए गए पीईएम-स्वरूपित फ़ाइल से एक्स 509 प्रमाण पत्र निकालती है, जो बाउंसिलकास्टल लाइब्रेरी का उपयोग करती है।

आयात:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
import org.bouncycastle.openssl.PEMParser;

तरीका:

/**
* Reads an X509 certificate from a PEM file.
*
* @param certificateFile The PEM file.
* @return the X509 certificate, or null.
* @throws IOException if reading the file fails
* @throws CertificateException if parsing the certificate fails
*/
public static X509Certificate readCertificatePEMFile(File certificateFile) throws IOException, CertificateException {
if (certificateFile.exists() && certificateFile.canRead()) {
try (InputStream inStream = new FileInputStream(certificateFile)) {
try (PEMParser pemParser = new PEMParser(new InputStreamReader(inStream))) {
Object object = pemParser.readObject();
if (object != null && object instanceof X509CertificateHolder) {
return new JcaX509CertificateConverter().getCertificate( (X509CertificateHolder)object );
}
}
}
}
return null;
}

यह "सामान्य" प्रमाण पत्र फ़ाइलों के लिए अच्छी तरह से काम करता है, ई।जी। एक सर्वर प्रमाणपत्र। अगर मेरे पास एक CA चेन सर्टिफिकेट फाइल है, जिसमें कई सर्टिफिकेट हैं, तो मैं इस फाइल से सभी सर्टिफिकेट्स को कैसे हासिल कर सकता हूं (दिखाया गया तरीका केवल फाइल में पहला सर्टिफिकेट निकालता है)।

उत्तर:

जवाब के लिए 0 № 1

इस कोड को आज़माएं, यह कई प्रमाणपत्र और निजी कुंजी प्रविष्टि im PEM फ़ाइल संभालता है

Security.addProvider(new BouncyCastleProvider());
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
while((object = pemParser.readObject())!=null)
{
if(object instanceof X509CertificateHolder)
{
X509Certificate x509Cert = (X509Certificate) new JcaX509CertificateConverter().getCertificate((X509CertificateHolder) object);
}
else if(object instanceof PEMEncryptedKeyPair)
{
if(password==null) throw new IllegalArgumentException("Password required for parsing RSA Private key");

PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(password.toCharArray());
converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv));
}
else if(object instanceof PEMKeyPair)
{
converter.getKeyPair((PEMKeyPair) object);
}
}