PKCS12 Java Keystore de CA y certificado de usuario en java

Recientemente me han encargado de burlarme de un producto de Apple (Utilidad de configuración de iPhone) en Java. Una de las secciones en las que he estado un poco atascado es una parte sobre Exchange ActiveSync. Allí, le permite seleccionar un certificado de su Llavero para usarlo como credenciales para su cuenta EAS. Después de investigar un poco, descubrí que en realidad está creando un almacén de claves PKCS12, insertando la clave privada del certificado que seleccioné y codificándola en XML. Hasta ahora no es gran cosa. Si creo un archivo .p12 con Keychain Access, se carga sin problemas. Pero me encuentro con un problema cuando intento llevar eso a Java.

Digamos que exporto uno de esos certificados que había usado anteriormente con el archivo .p12 como un archivo .cer (esto es lo que esperamos obtener en el entorno). Ahora, cuando lo subo a Java, obtengo un objeto Certificado de la siguiente manera ...

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"));

Pero cuando lo intento ...

ks.setCertificateEntry("SomeAlias", userCert);

Tengo la excepción ...

java.security.KeyStoreException: TrustedCertEntry not supported

Entonces, desde certs me paso a las teclas. Pero con esos Certificados (también obtuve el Certificado CA), solo puedo acceder a la clave pública, no a la privada. Y si intento agregar la clave pública así ...

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

Yo obtengo...

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

Entonces ahora estoy aquí. ¿Alguien tiene alguna idea de cómo obtener una clave privada de un archivo .cer en un almacén de claves PKCS12 en Java? ¿Estoy incluso en el camino correcto?

¡Gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta