2024年10月5日 星期六

PKCS12 - Java Legacy version and supports workaround

如果使用 .p12 檔案的時候出現: Exception in thread "main" java.io.IOException: ObjectIdentifier() -- data isn't an object ID (tag = 48) 等類似的錯誤,這有可能會是 JDK 早期版本不支援的問題,可參考以下方式做 Workaround 解決。

.p12 文件裡面包含了一把 publickey 和 privatekey,做法就是把現有的 p12 檔案拆出這些檔案,然後重新用方法壓回去 .p12。


1. 解出 private key:

openssl pkcs12 -in 那個文件.p12 -nocerts -out 私鑰.key -passin pass:{密碼} -passout pass:{密碼}

2. 解出 public key:

openssl pkcs12 -in 那個文件.p12 -clcerts -nokeys -out 公鑰.crt -passin pass:{密碼}

3. 把檔案回去,用舊版的方式做成 .p12

openssl pkcs12 -inkey 私鑰.key -in 公鑰.crt -export -out new_your_vasp_certificate.p12 -passin pass:{密碼} -passout pass:{密碼}


Reference:

[1] https://stackoverflow.com/questions/70576089/caused-by-java-io-ioexception-objectidentifier-data-isnt-an-object-id-t
[2] https://support.oracle.com/knowledge/More%20Applications%20and%20Technologies/2847060_1.html#:~:text=An%20%22Invalid%20keystore%20format%22%20error,use%20on%20the%20WebLogic%20Server

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014