在我的项目中,我遇到了一些加密问题,由using "JCE Unlimited Strength Jurisdiction Policy Files"修复。在本地机器上,我刚刚替换了jre/lib/security
目录中的一些JAR。但是,我还需要我的项目在持续集成构建服务器上构建(确切地说,运行测试)(在我的情况下是Teamcity,但我认为它不是很重要),这意味着在JRE中修补jar每个构建代理的目录,根本不是一个好的选择。
有没有办法在不修补JRE的情况下指定这些JCE策略?
答案 0 :(得分:1)
根据Java Cryptography Architecture (JCA) Reference Guide下的How to Make Applications "Exempt" from Cryptographic Restrictions,您可以捆绑一个策略文件,说明您的应用程序的JAR的免除项,但是必须对JAR进行签名,甚至不确定Oracle的默认加密提供程序是否支持这样:
(注意:SunJCE提供商不提供ExemptionMechanismSpi类的实现。)
毋庸置疑,我还没有测试过这种方式...;)这看起来比替换两个文件更复杂。我总是在所有JVM上安装管辖权策略文件,但是我使用Debian Alternatives System来自动替换JDK提供的文件。这使得升级更加痛苦。
答案 1 :(得分:0)
好的,我实际上可以使用java反射绕过策略:How to avoid installing "Unlimited Strength" JCE policy files when deploying an application?
看起来像一个肮脏的黑客,但确实有效,不需要任何许可,签名和所有这些。