皆さん、こんにちは Java プログラムで生成した PKCS#8 秘密鍵を PEM エンコード ファイルに変換しようとしています。
Security.addProvider(new BouncyCastleProvider());
SecureRandom rand = new SecureRandom();
JDKKeyPairGenerator.RSA keyPairGen = new JDKKeyPairGenerator.RSA();
keyPairGen.initialize(2048, rand);
KeyPair keyPair = keyPairGen.generateKeyPair();
PEMWriter privatepemWriter = new PEMWriter(new FileWriter(new File(dir + "private.key")));
privatepemWriter.writeObject(keyPair.getPrivate());
プログラムを実行した後、私は両方の形式の秘密鍵と公開鍵を持っています(コードは機能するため表示されていません)。次に、この openssl コマンドを使用して、private.key を pem 形式のファイルに変換します。
openssl pkcs8 -nocrypt -inform DER -in private.key -out private2.pem
private.pem と private2.pem を比較すると、それらは異なり、明らかに private.pem を使用しようとすると、有効なファイルではないと表示されます。
この秘密鍵を必要な PEM 形式に適切に変換するために、どの手順が欠けていますか? プログラム内から OpenSSL を使用することはできません。それ以外の場合は、その関数呼び出しを追加するだけです。このプログラムで BouncyCastle ライブラリにアクセスできるので、見落としている解決策があるかもしれません。