Java 不清楚OpenJDK安全配置中需要进行哪些更改才能允许IcedTea Web使用库
短版: 是否需要将策略添加到OpenJDK JREJava 不清楚OpenJDK安全配置中需要进行哪些更改才能允许IcedTea Web使用库,java,java-web-start,icedtea,icedtea-web,Java,Java Web Start,Icedtea,Icedtea Web,短版: 是否需要将策略添加到OpenJDK JREjava.policy,以便在IcedTea Web的默认安装中使用JCE加密库?这是某种虫子吗 长版本: 我通过WebStart加载了这个Swing应用程序,我正试图使用OpenJDK8(RedHat、AdoptOpenJDK或Coretto变体)+IcedTea WebStart(从下载)。我的Swing应用程序除了一个面板外,其他所有功能都正常工作 我得到一些存储在某处的加密文本,并使用以下方法将其解密以显示在文本字段中: public s
java.policy
,以便在IcedTea Web的默认安装中使用JCE加密库?这是某种虫子吗
长版本:
我通过WebStart加载了这个Swing应用程序,我正试图使用OpenJDK8(RedHat、AdoptOpenJDK或Coretto变体)+IcedTea WebStart(从下载)。我的Swing应用程序除了一个面板外,其他所有功能都正常工作
我得到一些存储在某处的加密文本,并使用以下方法将其解密以显示在文本字段中:
public synchronized static String decrypt(String toDecrypt, byte[] key) {
Key keySpec = new SecretKeySpec(key, "AES");
try {
CIPHER.init(Cipher.DECRYPT_MODE, keySpec);
return new String(CIPHER.doFinal(toBytes(toDecrypt)));
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
完成此过程的面板会在加载时解密,但无法加载到RedHat OpenJDK(我想是v1.7)中包含的IcedTea web中,错误是:
at javax.crypto.Cipher.getInstance(Cipher.java:539) Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES
... 45 more
Caused by: java.lang.RuntimeException: java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我在Linux和Windows上安装了OpenJDK,它说可用的提供程序有所不同
对于Windows:
- SunPCSC版本1.8
- XMLDSig版本1.8
- SunSASL版本1.8
- SUNJGS1.8版
- SunJSSE版本1.8
- SunEC版本1.8
- SunRsaSign版本1.8
- SUN版本1.8
- SUN版本1.8
- SunRsaSign版本1.8
- SunEC版本1.8
- SunJSSE版本1.8
- SunJCE 1.8版
- SUNJGS1.8版
- SunSASL版本1.8
- XMLDSig版本1.8
- SunPCSC版本1.8
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI
安全策略也是无限的
# Note: This property is currently used by the JDK Reference implementation.
# It is not guaranteed to be examined and used by other implementations.
#
crypto.policy=unlimited
但他们似乎缺少WebStart的权限,因为我可以从IntelliJ(无WebStart环境)解密并打开运行应用程序的面板
最后,仅在上一个IcedTea WebStart版本(v1.8)中,我在加载面板时收到了一条额外的错误消息:
Denying permission: ("java.lang.RuntimePermission" "loadLibrary.sunmscapi")
Denying permission: ("java.security.SecurityPermission" "putProviderProperty.SunJCE")
这让我尝试在java.policy
permission java.security.SecurityPermission "putProviderProperty.SunJCE";
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec";
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.rsa";
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.interfaces";
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.util";
这样,我的应用程序终于可以运行了。但是,由于这在任何地方都没有文档记录,这样配置是否正确?我是否正在设置不安全的配置?这是应该在OpenJDK中修复的吗?谢谢。这取决于应用程序的安全设置。它是在沙箱、j2ee应用程序客户端权限还是所有权限中运行?@sclassen如何为WebStart应用程序设置它?这取决于应用程序的安全设置。它是在沙箱、j2ee应用程序客户端权限还是所有权限中运行?@sclassen如何为WebStart应用程序设置这些权限?