転送する必要があるすべての情報を含むJSONファイルを生成しようとしています。別のシステムで操作を行う必要があります。フィールドの1つはJava証明書です。私はファイルの内容を別のシステム上に複製する必要があるので、内容を直接読み取ってからファイルに書き込むと思った。しかし、新しく書き込まれたファイルを読み込んでいるうちに、私は次のようになります:Json文字列フィールドとしてJava証明書ファイルを書き込む方法は?
Caused by: java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
at java.security.KeyStore.load(KeyStore.java:1445)
これを行う正しい方法は何でしょうか?
現在、元の証明書を読み込むための私が使用しています:
FileUtils.readFileToString(originalTrustFile);
は、私が使用しています新しいファイルを書き込む:
ストアは、いくつかのJSONファイルに埋め込まれたの考え方にもかかわらずFileUtils.writeByteArrayToFile(trustFile, trustJsonContent.getBytes());
ありがとうございます、私はあなたの提案されたアプローチを試みます。私はあなたがデフォルトのJava証明書フォーマットを.pemフォーマットにも変換できることを読んでいました。私はそれについてもっと読む予定です。 pem形式に証明書と秘密鍵の両方が含まれているかどうかわからない場合は、後で証明書を再構築するためにjsonファイルに別のフィールドとして格納しておく必要があります。 – lex
[RFC7468](https://tools.ietf.org/html/rfc7468)によると、.pemのテキスト表現は2つの囲み線を含む必要があります( '--- Begin ... ---'と '--- End ... ---- ')をbase64の内容で置き換えます。 .pemが正しいJSONフィールド値になるように見えます。これらの2つの改行文字をエスケープして、デシリアライズ時にエスケープする必要があります。これは、一方ではJSON(人間はJSONからpem certを簡単に抽出してそれをさらに処理することができます)を理解しやすくし、他方では追加の処理労力によって支払いを行います。答えとしてあなたのPEMオプションを追加しますか? – Kostiantyn
今のところ、すべてを私の仕事で、すべてをBase64でエンコードされた文字列に変換するだけです。そして、文字列をバイト配列としてデコードし、ファイルに書き込むシステムでは、ありがとう! – lex