我正在嘗試生成一個JSON文件,其中包含我需要傳輸的所有必需信息並在另一個系統上執行進一步的操作。其中一個字段是java證書。由於我只需要複製文件的內容,因爲它在另一個系統上,我認爲直接讀取內容然後寫入文件是可行的。但是當加載新寫入的文件時,我得到:如何將Java證書文件編寫爲Json字符串字段?
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);
寫我使用一個新的文件:
FileUtils.writeByteArrayToFile(trustFile, trustJsonContent.getBytes());
謝謝,我會嘗試你建議的方法。我剛剛讀到,您可以將默認的Java證書格式轉換爲.pem格式。我會更詳細地閱讀它。不知道pem格式是否可以同時包含證書和私鑰,或者我必須解壓縮它們並將它們作爲單獨的字段放入json文件中,以便稍後重新構建證書。 – lex
根據[RFC7468](https://tools.ietf.org/html/rfc7468),.pem的文本表示必須包含2個封閉行('--- Begin ... ---'和'--- End ... ----'),中間是base64內容。似乎讓.pem成爲一個正確的JSON字段值,你應該注意逃離那兩個換行符,並且在反序列化時避開它們。這樣可以提供更多可理解的JSON(一方面人類可以輕鬆從JSON中提取Pem證書並進一步處理),另一方面通過額外的處理工作支付。你打算在這裏添加你的PEM選項作爲答案嗎? – Kostiantyn
現在,我只能將所有內容都轉換爲Base64編碼的字符串,然後在另一個系統上將字符串解碼爲字節數組並將其寫入文件。謝謝! – lex