PKCS12-Java-Keystore von CA und Benutzer-Zertifikat in java

Ich habe vor kurzem im Auftrag der Spott ein Apple-Produkt (iPhone Configuration Utility) in Java. Eines der Teile habe ich ein wenig stecken, ist ein Teil über Exchange ActiveSync. Dort, ermöglicht es Ihnen, wählen ein Zertifikat aus Ihrem Schlüsselbund zu verwenden, da die Anmeldeinformationen für Ihr EAS-Konto. Nach einigen Recherchen fand ich, dass es eigentlich die Erstellung einer PKCS12-keystore -, das einsetzen der private Schlüssel des Zertifikats, den ich ausgewählt habe, und die Kodierung in XML. So weit keine große Sache. Wenn ich eine .p12-Datei mit dem Schlüsselbund-Sie lädt, ohne ein problem. Aber ich Laufe in ein problem, wenn ich versuche zu bringen, die über Java.

Sagen, dass ich den export einer dieser certs, die ich verwendet hatte früher mit dem .p12-Datei als .cer-Datei (dies ist, was wir erwarten, zu bekommen in der Umgebung). Nun wenn ich es hochladen in Java bekomme ich ein Zertifikat Objekt wie folgt...

KeyStore ks = java.security.KeyStore.getInstance("PKCS12");
ks.load(null, "somePassword".toCharArray());

CertificateFactory cf = CertificateFactory.getInstance("X.509", new BouncyCastleProvider());
java.security.cert.Certificate userCert  = cf.generateCertificate(new FileInputStream("/Users/me/Desktop/RecentlyExportedCert.cer"));

Aber wenn ich versuche,...

ks.setCertificateEntry("SomeAlias", userCert);

Bekomme ich die exception...

java.security.KeyStoreException: TrustedCertEntry not supported

Also von certs bewege ich mich auf Tasten. Aber mit den Zertifikaten (ich habe das CA-Cert), ich bin nur in der Lage, Zugriff auf den öffentlichen Schlüssel nicht der private. Und wenn ich versuche, fügen Sie den öffentlichen Schlüssel wie so...

java.security.cert.Certificate[] chain = {CACert};
ks.setKeyEntry("SomeAlias", userCert.getPublicKey().getEncoded(), chain);

Bekomme ich...

java.security.KeyStoreException: Private key is not stored as PKCS#8 EncryptedPrivateKeyInfo: java.io.IOException: DerValue.getOctetString, not an Octet String: 3

So, jetzt bin ich hier. Hat jemand eine Idee, wie man einen privaten Schlüssel aus .cer-Datei in einen PKCS12-keystore in Java? Bin ich noch auf dem richtigen Weg?

Vielen Dank im Voraus!

InformationsquelleAutor Staros | 2010-09-01

Schreibe einen Kommentar