秘密鍵をパスフレーズ「12345」で保護された PEM 形式のファイル「privatekey.pem」に出力するだけの場合は、次の BC コードを使用できます。
JceOpenSSLPKCS8EncryptorBuilder encryptorBuilder = new JceOpenSSLPKCS8EncryptorBuilder(PKCS8Generator.PBE_SHA1_3DES);
encryptorBuilder.setRandom(EntropySource.getSecureRandom());
encryptorBuilder.setPassword("12345".toCharArray());
OutputEncryptor oe = encryptorBuilder.build();
JcaPKCS8Generator gen = 新しい JcaPKCS8Generator(privKey,oe);
PemObject obj = gen.generate();
PEMWriter pemWrt = new PEMWriter( new FileWriter("privatekey.pem"));
pemWrt.writeObject(obj);
pemWrt.close();
その後、opensslで秘密鍵を取得できます
$ openssl rsa -in privatekey.pem -check
privatekey.pem のパスフレーズを入力してください:
RSA キーは問題ありません
RSA キーの書き込み
-----RSA 秘密鍵の開始-----
.....
-----END RSA 秘密鍵-----
PEMWriter の「標準的な」使用では、秘密鍵をパスフレーズで保護しません:(