在使用 Java 開發應用程式時,我們可能會遇到一些奇怪的錯誤,其中之一是
java.io.IOException: parseAlgParameters failed: ObjectiveIdentifier() -- data isn't an object ID (tag = 48)
的錯誤。這是一個與 PKCS12 憑證格式和 AES 加密相關的問題。
問題描述
當我們嘗試使用 Java 可能會遇到錯誤消息 java.io.IOException: parseAlgParameters failed: ObjectiveIdentifier() -- data isn't an object ID (tag = 48)
。這個錯誤的發生與 Java 11 之前的版本中的 PKCS12 憑證格式不支援 AES 加密算法有關。這是一個已知問題,相關討論可以在這個連結中找到:https://bugs.openjdk.java.net/browse/JDK-8220734。
問題解決
我們可以使用 OpenSSL 工具來解決這個問題。在這個情境下,我們可以使用以下的指令:
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile intermediate.crt -password pass:yourpassword -legacy
在這個指令中,private.key
是私鑰文件的路徑,certificate.crt
是 CRT 憑證文件的路徑,intermediate.crt
是中繼憑證文件的路徑,而 yourpassword
則是您希望設定的 PFX 文件的密碼。使用 -legacy
參數,我們可以使用較舊版本的加密算法(例如3DES),這樣就可以避免 Java 11 之前版本中的錯誤。
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!