如何使用NetBeans自行签名applet?
在过去的几个月里,我为一个学术项目开发了一个沙箱小程序。 由于Java 1.7.51对applet的安全限制,我一直试图自我签署我的applet,希望它能够遵守或克服JRE对applet的必要条件。
我正在使用NetBeans,我将一些显示如何自我签名jar文件的链接作为出发点。 不幸的是,我无法让它发挥作用。
我试图在build.xml文件中添加以下指令:
我收到以下错误消息:
Execute failed: java.io.IOException: Cannot run program "jarsigner.exe": error=2, The specified file is not found
我非常感谢你的帮助,以及更多关于NetBeans的帮助!
参数dir
不是您的可执行文件所在的位置。 它是执行它的目录。
如果你想保持exec
样子,你需要将resolveexecutable
参数设置为true。 来自Ant手册 :
当此属性为true时,首先针对项目basedir解析可执行文件的名称,如果不存在,则针对执行目录(如果已指定)解析。 在Unix系统上,如果您只想允许在用户路径中执行命令,请将此设置为false。 自从Ant 1.6开始
在Netbeans 8.0.1(可能还有其他)中,有一个项目属性设置,通过指定密钥或使用生成密钥,您可以选择对项目进行签名。
- 打开并选择您的项目。
- 选择文件 – >项目属性。
- 选择“Web Start”
- 如果尚未启用,请选中“启用Web Start”复选框。
- 在Webstart属性选项卡的Signing:部分中选择Customize …按钮。
- 单击单选按钮以按生成的密钥进行自签名 – 或 – 按指定的密钥进行签名,然后输入密钥信息。
- 选择如何处理混合代码。
有关此内容的更详细说明,您可以在Netbeans中查看帮助并搜索“ Standard Java SE Project Properties Dialog Box: Web Start
。 细节应该在弹出的第一个结果中。
如果您没有可信证书,请注意以下警告。
警告:出于安全原因,从JDK7u21开始不推荐使用未签名和自签名的WebStart应用程序和Applet。 为确保将来的function正常,请使用可信证书签署WebStart应用程序和Applet。
我想出了怎么做。 需要将以下行添加到build.xml,在NetBeans上相应项目的文件夹下:
我希望这对其他用户有用!
我的JavaFX应用程序需要在沙箱中运行。 这是我走向成功的道路..
开发环境:
- Netbeans 8.0.2,
- jre1.8.0_45
- jdk1.8.0_25
- Apache的Tomcat的7.0.61-Windows的64位
- Window 7 Pro
- Firefox 37.0.2
第1步:让应用程序以“Unrestricted Access”弹出窗口运行。
- 由于必须对所有applet和JNLP(RIA)进行签名,因此请在NetBeans之外创建自签名证书。
- 使用Java控制台将证书添加到java的cacerts中。 这样您就可以在不购买证书的情况下进行测试。 顺便说一下,不要像我那样购买廉价的“Java Code Signing”Comodo证书。 Comodo根证书不在Java的cacerts中。 因此,applet将无法在Firefox中运行。
- 将您的证书添加到IE的密钥库中,以使您的applet能够在IE中运行。 顺便说一句,Comodo证书将在IE中运行。 IE使用Windows密钥库而不是Java密钥库。 Microsoft认为Comodo是根CA,而Oracle则不然。
- 转到项目 – >属性 – >构建 – >部署。
- 选中“请求不受限制的访问权限(启用签名)”。 这将导致主要和从属jar子被签名。
- 单击“编辑”按钮并配置自签名证书。
- 转到Project-> Properties-> Build-> Packaging-> Custom Manifest Properties。
- 点击“编辑”。 添加属性“Application-Name”并为其赋值。
- 转到Files-> nbproject-> project.properties-> manifest.custom.permissions。
- 将值设置为“所有权限”。
- 转到Files-> nbproject-> project.properties-> manifest.custom.codebase。
- 将值设置为“*”。
- 单击“清理并生成”。 请注意,脚本会对项目jar以及从属jar进行签名。 它将签名的jar放在dist / lib中。
- 点击“运行”。 请注意,Netbean的运行脚本会删除dist / lib文件夹,并将未签名的文件复制到dist / lib。
- 该项目现在应该使用“未签名代码检测到的错误”弹出窗口运行。
- 为了避免混淆,您可能需要在Netbeans之外签署任何依赖的jar,因为Clean和Build会对依赖的jar进行签名,然后在运行时删除它们。 奇怪的是,如果你只是单击Run而不是在它之前使用Clean和Build Netbeans复制相关的jar,然后在运行之前签名。 这是一个function还是一个bug? 询问心灵想知道。
- 进行无function编辑。 点击“运行”。
- applet和JNLP现在应该以“Unrestricted access”弹出窗口运行。
第2步:让应用程序以“受限访问”弹出窗口运行。
- 转到Files-> nbproject-> project.properties-> manifest.custom.permissions。
- 将值设置为“sandbox”。
- 转到Files-> nbproject-> project.properties-> javafx.deploy.permissionselevated。
- 将值设置为“false”。
- 启动服务器,例如Tomcat。 我是从Netbeans单独安装的。
- 构建dist文件夹并将其部署到Tomcat的webapps文件夹。 他们在项目中。
- 转到Files-> nbproject-> project.properties-> manifest.custom.codebase。 将值设置为服务器的网络地址,例如192.168.1.45。
- 通过从服务器运行applet来调用applet,例如http:192.168.1.45:8080 / dist / MyApp.html。
用Firefox和IE测试。 不适用于Chrome。