2010-12-07 44 views
2

J'ai besoin de convertir le certificat du format DER au format pkcs # 12. Je sais que je peux le faire en utilisant la commande openssl. Je suis à la recherche de Java API/Class qui peut faire ce travail. Toute aide sera appréciée.Y at-il une API java pour convertir le certificat du format 'DER' au format pkcs # 12

+0

Un certificat ne contient qu'une clé publique plus les informations d'identification, alors que la plupart des utilisations du format pkcs # 12 s'attendent à ce qu'une clé publique et privée figure dans le fichier pkcs # 12. Je ne suis pas au courant des applications qui s'attendent à ce que les clés publiques soient au format pkcs # 12. –

Répondre

1

Vous pouvez essayer de charger le conteneur PKCS # 12 comme keystore:

java.security.KeyStore ks = java.security.KeyStore.getInstance("PKCS12"); 
ks.load(new java.io.FileInputStream("yourStore.p12"), "yourPassword".toCharArray()); 

Une fois chargé, vous pouvez énumérer les éléments à l'intérieur du conteneur:

for(Enumeration enum = ks.aliases(); enum.hasMoreElements();) { 
    String alias = (String) enum.nextElement(); 
    System.out.println("@:" + alias); 
    if (ks.isKeyEntry(alias)) { 
     System.out.println("return PrivateKey"); 
     PrivateKey pk = (PrivateKey) ks.getKey(alias, password); 
     // ... 
    } 
} 
0

Cela peut convertir PKCS de PEM

openssl pkcs12 -export -in pem-certificate-and-key-file -out pkcs-12-certificate and-key-file 

permet donc de convertir votre DER PEM premier

openssl dsa -inform PEM|DER -outform DER|PEM -in pem-file|der-file -out der-file|pem-file 
+0

Je sais que openssl peut le faire, en recherchant l'API java qui peut faire la même chose. – Unicorn

+0

@Unicorn - Ne pouvez-vous pas utiliser System.getRuntime() pour les exécuter? –

+0

Ce n'est pas une API Java. – jww

0

Si je comprends bien, PEM est tout simplement la chaîne codée base64 du contenu DER avec la les lignes d'en-tête et de pied de page appropriées. Pour convertir en Base64, vous pouvez utiliser javax.mail.internet.MimeUtility par exemple.

0

J'ai reçu beaucoup de kilomètres de Portecle.

Si vous devez le faire par programmation, une grande partie de ce dont vous avez besoin se trouve dans la classe KeyStore de Java. En ce qui concerne la convivialité, eh bien, c'est plutôt sélectif sur ses amis. Ouvrez un magasin, ajoutez-le, enregistrez-le. Si vous avez besoin de chaînes de cert, ce sera un peu plus compliqué.

En ce qui concerne l'extraction du CERT du codage DER, reportez-vous au javadoc X509Certificate. Surtout les références à CertificateFactory.