アプリケーションに PostgreSQL サーバーを使用しています。SSL証明書を使用して安全な接続を実装しようとしています。postgresql.conf で ssl プロパティを "on" に変更しました。以下の Java コードを使用して暗号化された自己署名証明書とキーを生成します。pbe を使用して秘密キーを暗号化します。
byte[] encodedprivkey = privKey.getEncoded();
String MYPBEALG = "PBEWithSHA1AndDESede";
String password = "test123";
int count = 20;// hash iteration count
Random random = new Random();
byte[] salt = new byte[8];
random.nextBytes(salt);
PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, count);
PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory keyFac = SecretKeyFactory.getInstance(MYPBEALG);
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);
Cipher pbeCipher = Cipher.getInstance(MYPBEALG);
// Initialize PBE Cipher with key and parameters
pbeCipher.init(Cipher.ENCRYPT_MODE, pbeKey, pbeParamSpec);
// Encrypt the encoded Private Key with the PBE key
byte[] ciphertext = pbeCipher.doFinal(encodedprivkey);
// Now construct PKCS #8 EncryptedPrivateKeyInfo object
AlgorithmParameters algparms = AlgorithmParameters.getInstance(MYPBEALG);
algparms.init(pbeParamSpec);
EncryptedPrivateKeyInfo encinfo = new EncryptedPrivateKeyInfo(algparms, ciphertext);
FileOutputStream out3 = new FileOutputStream("server.key");
out3.write(Base64.encodeBase64(encryptedPkcs8, true));
out3.flush();
out3.close();
FileOutputStream out3 = new FileOutputStream("server.crt");
out3.write(Base64.encodeBase64(chain[0].getEncoded(), true));
out3.flush();
out3.close();
サーバー証明書とキーをデータディレクトリにロードしましたが、サーバーを起動すると、エラーが発生しました
FATAL: could not load private key file "server.key": unknown pbe algorithm
これを解決するのを手伝ってください。誰もこのエラーに直面しましたか? どんな種類の助けも本当に感謝しています。