You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 1.8 Applet在IE11中遇安全异常,当前能否自签名JAR包?

关于Java 1.8下Applet自签名及安全异常的解决方案

嘿,我来帮你搞定这个问题!首先明确说:完全可以对JAR包进行自签名,你遇到的System.getProperty安全异常,本质是Java 1.8对Applet的安全沙箱机制做了更严格的限制,而自签名正是解决这类权限问题的关键手段之一。

下面一步步给你讲怎么做,以及需要注意的细节:

1. 生成自签名证书

用JDK自带的keytool工具生成证书,命令如下:

keytool -genkey -alias my_applet_alias -keyalg RSA -keystore my_keystore.jks -validity 3650
  • -alias:给证书起个别名,方便后续引用
  • -keyalg RSA:指定加密算法,RSA是目前推荐的安全算法
  • -validity 3650:设置证书有效期,这里设了10年,避免频繁续签

执行命令后会提示你输入密钥库密码、个人信息等,按提示填写即可。

2. 用证书签名你的Applet JAR包

接下来用jarsigner工具给JAR签名:

jarsigner -keystore my_keystore.jks your_applet.jar my_applet_alias

这里替换your_applet.jar为你实际的Applet包文件名,my_applet_alias要和上面生成证书时的别名一致。

签名完成后,可以用jarsigner -verify your_applet.jar命令验证签名是否成功。

3. 解决System.getProperty的安全异常

即使自签名后,Java 1.8的Applet默认还是会受到权限限制,调用System.getProperty这类操作需要明确授权:

  • 如果用appletviewer测试,你可以创建一个自定义安全策略文件(比如applet_policy.policy),内容如下:
grant codeBase "file:/C:/path/to/your/applet/your_applet.jar" {
    permission java.util.PropertyPermission "*", "read";
};

然后运行appletviewer时指定这个策略文件:

appletviewer -J-Djava.security.policy=applet_policy.policy your_applet.html
  • 如果要在浏览器(比如IE11)中运行,你需要在Java控制面板里把你的JAR所在的目录添加到“例外站点列表”,或者用户在第一次运行时手动信任这个自签名的Applet(会弹出安全警告,需要选择“运行”)。

额外注意事项

  • Java 1.8是Oracle官方支持Applet的最后几个版本之一,Java 9及以后就逐步移除了Applet相关API,所以你在1.8环境下开发是没问题的,但要注意避免使用已废弃的Applet API。
  • 自签名的Applet在现代浏览器中会触发更严格的安全提示,用户需要手动确认信任才能运行,这和Java 1.6时代的宽松机制不同,提前和客户说明这一点。
  • 确保你的Applet代码没有依赖Java 1.6特有的API,升级到1.8时可能需要调整一些兼容性问题,比如替换某些已被标记为废弃的方法。

内容的提问来源于stack exchange,提问作者UnixNerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:20:13