[java.io.IOException:展开私有密钥的异常-java.security.InvalidKeyException:填充块已损坏

问题描述 投票:2回答:1

我正在尝试通过SSL(自签名SSL)将android应用连接到IIS下的XML Web服务。我已按照以下步骤操作:

  1. 在IIS管理器下创建自签名证书
  2. 将该证书导出为pfx文件
  3. 然后将pfx转换为(java keystore)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

我可能在哪里犯了错误?

事实上,我遵循了here的描述>

谢谢

我正在尝试通过SSL(自签名SSL)将android应用连接到IIS下的XML Web服务。我已按照以下步骤操作:在IIS管理器导出下创建自签名证书,该证书是...

java android ssl self-signed
1个回答
0
投票

我知道这个问题已有4年的历史了,但以防万一有人收到相同的错误:我不知道为什么,但是似乎用OpenJDK 11的keytool生成的密钥库和一个(由Oracle JDK 8的keytool生成的具有相同的证书/密钥/密码)。我遇到的问题是在Oracle JVM 8(u241)上运行的Tomcat 8.5下使用keystore-jdk11.p12提出的。我修复了此问题,只需使用Oracle JDK 8的keytool重新导入由OpenJDK 11生成的密钥库的内容,并带有

© www.soinside.com 2019 - 2024. All rights reserved.