簡體   English   中英

java.io.IOException:異常解包私鑰 - java.security.InvalidKeyException:pad 塊損壞

[英]java.io.IOException: exception unwrapping private key - java.security.InvalidKeyException: pad block corrupted

我正在嘗試通過 SSL(自簽名 SSL)將一個 android 應用程序連接到 IIS 下的 XML Web 服務。 我遵循了以下程序:

  1. 在 IIS 管理器下創建自簽名證書
  2. 將該證書導出為 pfx 文件
  3. 然后將 pfx 轉換為(java 密鑰庫)jks(PKCS12 格式),如下詳述
  4. 將 jks 作為原始數據嵌入到 android 應用程序中
  5. 並讀取 jks 文件的內容如下

將 pfx 轉換為 jks

keytool -importkeystore -srckeystore cert.pfx -srcstoretype pkcs12 
-destkeystore cert.jks -deststoretype pkcs12

閱讀jks的內容

KeyStore keyStore = KeyStore.getInstance("pkcs12");
InputStream in = _context.getResources().openRawResource(R.raw.cert);
try
{
    keyStore.load(in, "123456".toCharArray());
    mgrFact.init(keyStore, "123456".toCharArray());
}
catch (Throwable t)
{
    logger.error(t.getMessage());
}
finally
{
    in.close();
}

現在keyStore.load拋出以下異常

java.io.IOException: exception unwrapping private key 
-java.security.InvalidKeyException: pad block corrupted

我可能在哪里犯了錯誤?

事實上,我遵循了這里描述的內容

謝謝

我知道這個問題已經有 4 年了,但以防萬一其他人遇到同樣的錯誤:

我不知道為什么,但 OpenJDK 11 的 keytool 生成的密鑰庫與 Oracle JDK 8 的 keytool 生成的密鑰庫(具有相同的證書/密鑰/密碼)之間似乎存在差異。

我的問題是使用下的keystore-jdk11.p12

  • 雄貓 8.5
  • Oracle JVM 8 (u241)

我修復了這個問題,只需使用 Oracle JDK 8 的 keytool 重新導入 OpenJDK 11 生成的密鑰庫的內容,

/path/of/jdk8.241/bin/keytool \
   -importkeystore \
   -srckeystore keystore-jdk11.p12 \
   -destkeystore keystore-jdk8.p12 \
   -deststoretype pkcs12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM