【问题标题】:Don't want to use unlimited strength policy files不想使用无限强度策略文件
【发布时间】:2015-01-12 08:24:49
【问题描述】:

我想制作一个生成签名的 Java 应用程序,但遇到了无限强度策略文件的问题, 在许多帖子中讨论过,例如How to avoid installing "Unlimited Strength" JCE policy files when deploying an application?

当然,当我切换策略文件时一切正常,但我宁愿避免这种情况,因为我不打算使用对称加密,所以我猜测这是可能的。我的问题是我已经在 KeyStore 的加载方法中得到了 Illegal key size 异常。

我的问题:

1) 我可以对密钥库中的内部加密进行任何操作,以使密钥大小限制不需要用户更改策略文件吗?

2) 我知道 BouncyCastle 轻量级 API 可能是一种选择。如果是这样,我如何使用该 API 加载密钥库?

Security.addProvider(new BouncyCastleProvider());           

//Get private key
KeyStore keyStore = KeyStore.getInstance("PKCS12","BC");
String pwd = "password";
FileInputStream finJKS = new FileInputStream("C:\\TEMP\\host.p12");
keyStore.load(finJKS,pwd.toCharArray());

运行: java.io.IOException:异常解密数据 - java.security.InvalidKeyException:非法密钥大小

在 Windows 上的 Netbeans 7.4 上的 JDK 7u51 中运行 jre。

最好的问候

【问题讨论】:

    标签: java windows keystore jce


    【解决方案1】:

    尽管使用了 BouncyCastle,您的代码 sn-p 仍会引发 InvalidKeyException,因为您没有使用 BC Lightweight API。如果您通过 JCE API 访问 BC,则适用与 Sun/Oracle 提供商相同的加密强度限制。

    PKCS#12 文件通常使用 3DES (pbeWithSHA1And3-KeyTripleDES-CBC) 加密,不受默认策略文件的限制。但是,PKCS#12 允许使用任意加密算法,因此您似乎获得了一个使用另一种算法加密的 p12 文件。您可以使用 openssl 进行检查:

    openssl pkcs12 -in host.p12 -info -noout
    

    当您使用 keytool 将密钥库转换为 JKS 或 JCEKS(更安全)时,加密算法应该会发生变化:

    keytool -importkeystore -srckeystore host.p12 -srcstoretype PKCS12 -deststoretype JCEKS -destkeystore host.jks
    

    当然你必须调整你的代码:

    KeyStore keyStore = KeyStore.getInstance("JCEKS");
    

    您甚至可以使用 keytool 将 JCEKS 密钥库转换回 PKCS12。 Keytool 生成带有pbeWithSHA1And3-KeyTripleDES-CBC 的PKCS12 文件。

    【讨论】:

    • 非常感谢您提供宝贵的信息。我测试了我的 p12 文件,它实际上使用了 pbeWithSHA1And3-KeyTripleDES-CBC 算法。无论如何,当我在没有 BouncyCastle 的情况下进行测试时: KeyStore keyStore = KeyStore.getInstance("PKCS12");然后我对策略文件没有任何问题。当我根据您的示例转换密钥库并使用“JCEKS”实例时也是如此。
    • 嗯,这是预期的行为。 BC 和您的 p12 文件似乎存在一个奇怪的问题,因为无论您是否使用 BC 都应该没有区别(我实际上只是用我的一个 p12 文件尝试过)。
    猜你喜欢
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多