Versuch, ein X509
mit der BouncyCastle-API zu generieren. Hier ist mein Code-Stück.
try {
Security.addProvider(new BouncyCastleProvider()); // Anbieter hinzufügen
String pathtoSave = "D://sureshtest.cer";
KeyPair keyPair = generateKeypair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
X509Certificate trustCert = createCertificate(null,"CN=DigiCorp",
"CN=Nextenders", publicKey, privateKey);
// Erstelle einen Eingabe-Stream aus der Datei, die das Zertifikat enthält.
InputStream is =new FileInputStream(new File("D://validcertFormCa.pfx"));
/*
* Das CertificateFactory-Objekt wird zum Lesen von Zertifikaten, CRL und Zertifikatspfaden verwendet.
* Erstellen Sie ein Factory-Objekt mit dem Standard-SPI-Muster, das in JCA verwendet wird.
*/
CertificateFactory factory =
CertificateFactory.getInstance("X.509", "BC");
/*
* Generiere ein X509-Zertifikat, das mit den aus dem Eingabe-Stream gelesenen Daten initialisiert ist.
*/
X509Certificate mastercert =
(X509Certificate) factory.generateCertificate(is);
java.security.cert.Certificate[] outChain = { trustCert,mastercert };
trustCert.checkValidity();
mastercert.checkValidity();
KeyStore outStore = KeyStore.getInstance("PKCS12");
outStore.load(null, null);
outStore.setKeyEntry("Mein eigenes Zertifikat", privateKey,
"admin123".toCharArray(), outChain);
OutputStream outputStream = new FileOutputStream(pathtoSave);
outStore.store(outputStream, "admin123".toCharArray());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
Und führe die Ausnahme aus
org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory$ExCertificateException
at org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory.engineGenerateCertificate(Unknown Source)
at java.security.cert.CertificateFactory.generateCertificate(Unknown Source)
at com.nextenders.certificategeenrator.CertificateGenerator.testGenerateSignCertWithKeyStore(CertificateGenerator.java:119)
at com.nextenders.facadeimplementation.facade.JUnitFacade.main(JUnitFacade.java:11)
Verursacht durch: java.lang.IllegalArgumentException: unknown object in getInstance: org.bouncycastle.asn1.ASN1Integer
at org.bouncycastle.asn1.ASN1Sequence.getInstance(Unknown Source)
at org.bouncycastle.asn1.x509.TBSCertificate.getInstance(Unknown Source)
at org.bouncycastle.asn1.x509.Certificate.(Unknown Source)
at org.bouncycastle.asn1.x509.Certificate.getInstance(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory.readDERCertificate(Unknown Source)
... 4 weitere