2014-10-11 8 views
1

Мне нужно создать файл сертификата pfx с паролем в java. Я поиск в Google и могу создать файл сертификат «ОГО» в http://www.java2s.com/Tutorial/Java/0490__Security/CreatingaSelfSignedVersion3Certificate.htmКак создать файл сертификата pfx в java?

Я добавить код в главном

FileOutputStream fos = null; 
fos = new FileOutputStream("public.cer"); 
fos.write(cert.getEncoded()); 
fos.close(); 

это только работа без пароля.

ответ

3

Обычно .pfx или pkcs12 его хранилище ключей для сохранения общедоступных пар частных ключей. Кроме того, если вы используете пару ключей RSA с открытым сертификатом, как в своем примере ссылки, обычно этот сертификат должен выдаваться центром сертификации, так или иначе, я полагаю, что вы пытаетесь сохранить самоподписанный сертификат, чтобы сделать это, вам нужно используйте java.security.KeyStore класса не FileOutputStream непосредственно, я даю вам пример:

import java.io.FileOutputStream; 
import java.security.KeyStore; 
import java.security.cert.X509Certificate; 

.... 

X509Certificate cert = // your certificate... 
// generate a keystore instance 
KeyStore ks = KeyStore.getInstance("PKCS12"); 
// save your cert inside the keystore 
ks.setCertificateEntry("YourCertAlias", cert); 
// create the outputstream to store the keystore 
FileOutputStream fos = new FileOutputStream("/your_path/keystore.pfx"); 
// store the keystore protected with password 
ks.store(fos, "yourPassword".toCharArray()); 

.... 

Как я сказал, как правило, в хранилище хранятся пары ключей, как правило, с использованием: setKeyEntry(String alias, byte[] key, Certificate[] chain) или setKeyEntry(String alias, Key key, char[] password, Certificate[] chain) однако с кодом выше вы можете сохранить сертификат в хранилище ключей, защищающем его паролем. Для получения дополнительной информации смотрите: java keystore api.

Надеется, что это помогает,

-1

У меня есть ответ:

KeyPair pair = generateRSAKeyPair(); 
    X509Certificate cert = generateV3Certificate(pair); 
    KeyStore ks = KeyStore.getInstance("PKCS12", "BC"); 
    char[] password = "abc".toCharArray(); 
    ks.load(null,null); 
    ks.setCertificateEntry(cert.getSerialNumber().toString(), cert); 
    ks.setKeyEntry(cert.getSerialNumber().toString(), pair.getPrivate(), password, new Certificate[]{cert,cert}); 
    FileOutputStream fos = new FileOutputStream("keystore.pfx"); 
    ks.store(fos, password); 
    fos.close(); 
Смежные вопросы