Обычно .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.
Надеется, что это помогает,