【问题标题】:How to use keytool to run a test and check if JCE is absent or present?如何使用 keytool 运行测试并检查 JCE 是否存在或不存在?
【发布时间】:2013-03-05 18:11:48
【问题描述】:

最近我遇到了来自 Oracle 的 JDK 安装,它在 jre/lib/security 目录中存在 JCE 文件,例如 local_policy.jar,但这些文件是假文件,并没有真正启用无限强度加密。将它们替换为从 Oracle 下载后,事情变得更加顺利。

现在我认为应该有一种简单的方法来对系统进行健全性测试并防止这样的混乱。所以,我想知道:

我可以运行哪个keytool 操作,只有在安装并使用了适当的 JCE jar 时才能成功?

这样,当它失败时,我知道 local_policy.jar 要么不可用,要么有一个无用的虚拟文件,应该用真实文件换掉。

【问题讨论】:

  • 不知道怎么用keytool做,但是你可以创建一个1行java程序来做stackoverflow.com/questions/7953567/…
  • 嗯,当 local_policy.jar 存在和不存在时,它会变为 false ...这就是为什么我不想推出自己的解决方案,可能是我设置错了.我想坚持使用 keytool 来解决这个问题,它无处不在,不需要像你建议的那样开始写一个衬里:gist.github.com/pulkitsinghal/5092928
  • local_policy.jar 的存在与否是没有意义的,它是 jar 的 contents 有意义的。该 jar 包含在默认的 java 安装中。
  • 那些内容是什么,我可以确认一下?顺便说一句:你上面引用的那个链接上的一个测试说是的,JCE 存在,另一个说不,它不是......似乎不可靠。
  • 我指的是最大密钥长度测试,它(在我的测试中)是对是否支持无限强度加密的可靠测试。我认为这就是您要测试的内容,对吗?您确实意识到 JCE始终存在,这只是支持强度的问题。

标签: java jce


【解决方案1】:

正如我在各种 cmets 中已经提到的,您可以使用 getMaxAllowedKeyLength() 测试来确定 jdk/jre 是否支持无限强度加密(在我的测试中,我使用了“AES”密码,但“RC5”应该可以工作以及)。在测试这个功能时,你需要有正确的罐子(罐子的内容是重要的部分)。

在我的本地机器中,加密强度有限的 jdk 有一个包含以下内容的 local_policy.jar 文件:

// Some countries have import limits on crypto strength. This policy file
// is worldwide importable.

grant {
    permission javax.crypto.CryptoPermission "DES", 64;
    permission javax.crypto.CryptoPermission "DESede", *;
    permission javax.crypto.CryptoPermission "RC2", 128, 
                                     "javax.crypto.spec.RC2ParameterSpec", 128;
    permission javax.crypto.CryptoPermission "RC4", 128;
    permission javax.crypto.CryptoPermission "RC5", 128, 
          "javax.crypto.spec.RC5ParameterSpec", *, 12, *;
    permission javax.crypto.CryptoPermission "RSA", *;
    permission javax.crypto.CryptoPermission *, 128;
};

而实力无限的jdk却有内容:

// Country-specific policy file for countries with no limits on crypto strength.
grant {
    // There is no restriction to any algorithms.
    permission javax.crypto.CryptoAllPermission; 
};

(请注意,US_export_policy.jar 在两种情况下都是相同的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多