- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的公司为服务器生产 Java 应用程序并提供 JNLP 文件以启动本地应用程序。从 OSX 10.8.4 开始,需要使用 Developer ID 对 JNLP 文件进行签名才能让 Gatekeeper 满意(它实际上在最底部的 release notes 中)。
问题是:如何做到这一点? AFAIK 您可以签署应用程序(我们有一些使用开发人员 ID 签名的 Java 应用程序) - 但 JNLP - 文件就是这样:文件。
下一步:如何使用生成的 JNLP 文件执行此操作。我们必须修改它们,因为它们来自服务器 - 例如属性、基本 URL 等。
AFAIK Java has a certain mechanism说 JNLP 文件是通过它们各自的 JAR 文件(包含主类的文件)签名的 - 但是:Jar 文件是用不同的证书签名的,它们也不会满足 Gatekeeper。
我确实找到了 one reference on how to sign tools and stuff ,但不适用于动态文件的场景。
我不想要的答案:右键单击并打开以覆盖 Gatekeeper 或更改系统或 Java 设置。这不是一个选择。
[更新]从 OSX 10.9.5 开始,您还必须使用 OSX 10.9+ 进行签名并拥有有效的版本 2 签名。这将如何完成?
最佳答案
我想我找到了解决办法。目前唯一能想到的。我们基本上需要使用自定义应用启动器包装 JNLP,签署应用,确保我们可以在服务器上动态修改 JNLP,然后让它运行。
您可能知道,有一个 app bundler 项目可以将任何 JAR 文件打包到 OSX 可执行文件中。这可以签名、交付并且不会使 Gatekeeper 失败。我制作了一个自定义 fork(用于拉入主 fork),它可以获取一个 JNLP 文件,将其包装起来,您就有一个自定义应用程序可以完成 JNLP 应该做的所有事情。
但是,要求是您确实拥有有效的“开发者 ID 申请”证书
<yourapp>.app/Contents/Java/
现在,如果一切正常,zip 文件应该会自动解压到“下载”文件夹中,您应该会看到您的应用程序图标。如果你真的没弄错,你可以像正常一样执行应用程序。
我希望这将帮助许多开发人员在 OSX 中修复损坏的 JNLP 行为。
[可修改 JNLP 的更新]从 OSX 10.9.5 开始,您的应用程序需要有有效的版本 2 签名。这意味着应用程序 bundler (设置资源列表文件)以前使用的技巧不再起作用。现在所有东西都必须签名,之后几乎不可能更改已签名的应用程序。
不过,我确实找到了一种方法:使用 app bundler。将 JNLP 设置为 Contents/_CodeSignature
中的文件目录。不要在那里复制您的可修改 JNLP,但请执行此操作,例如稍后在修补 zip 时使用 Java(无论如何您都需要一些代码)。
请注意:仅当您必须将另一个 JNLP 文件动态放入应用程序容器时才需要这样做(这就是问题所在)
更新(08-2017)
Oracle 将于 9 月底发布 Java 9。 appbundle 没有正确处理 java9 虚拟机。他们改变了很多 API 和 javaws 的工作方式。因为我需要说:如果你想使用封装的 JNLP 应用程序,请坚持使用 java8。
关于java - 如何为 OSX 和 Gatekeeper 签署(动态)JNLP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16958130/
有人可以告诉我签署我的 clickonce 应用程序的步骤吗? 如果从某人那里购买证书,我该如何安装它在我的开发盒以及我希望它运行的服务器上? 请概述步骤。 马尔科姆 最佳答案 以下是我相信您正在执行
我正在使用命令行 jarsigner.exe -keystore Keys.jks base.apk debug0 使用我自己的 key 退出 APK ,在删除 META-INF/CERT.RSA、C
我使用 iTextSharp 签署 PDF 文件。但是 Adobe Reader 无法验证我的签名。我使用证书颁发机构生成的 SHA-2 测试证书(我也尝试过 SHA-1)。我已经为该机构的测试证
我在尝试签署 F# 类库项目时遇到了很多麻烦。 首先我试过这个thread ,使用 AssemblyKeyFileAttribute 但没有成功。 我还尝试将标志“--keyfile:keyfile.
我正在尝试掌握 .NET dll/程序集的正式签名。 尤其 何时以及如何使用私钥 创建/控制私钥的最佳实践 需要签署什么样的模块/最佳实践 最佳答案 请参阅使用 Strong Name Signatu
我有一个由五个项目组成的解决方案,每个项目都编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳做法是什么? 用不同的 key 对每个签名;确保密码不同 用不同的 key
我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么? 使用不同的 key 对每个签名进行签名;确保密码不同 使用不同
尝试在 Java 中签署 SOAP 消息时抛出异常: 14:47:39.896 [AWT-EventQueue-0] ERROR com.ui.FinestraPrincipal - WSHandle
我正在运行 java web start 应用程序。由于应用程序数字签名已过期。我已经从 CA 购买了签名,并使用 storetype 作为 pkcs12 对我的 jar 文件进行了签名。 对 JNL
我已经在jar中手动添加了一些类文件。并在服务器中替换。但服务器没有拿出这个新的 jar 说:java.lang.SecurityException:类“test.TestProcess2”的签名者信
我想使用 keytool 对我的插件 jar 进行签名以生成 key 。 我知道有 -validity 选项,但如何设置它以使插件始终有效且永不过期。 谢谢 最佳答案 查看 keytool 文档: V
我有一个需要互联网访问的 Java 应用程序,因为它通过 WebView 嵌入了 Web 浏览器。 JavaFX 组件。 如果应用程序未打包在 Jar 中,则执行不会出现问题。但是,当打包在 Jar
我以前做过,但我完全忘记了如何签署 activeX 控件? 最佳答案 Digital Signing for ActiveX Components (MSDN) 关于activex - 签署 Acti
不知不觉中我删除了通常命名如下的钥匙串(keychain)系统证书 Software Signing com.apple.systemdefault com.apple.kerberos.kdc Ap
我尝试了一些基于 iText v1 或 v2 的数字 PDF 签名实用程序,发现似乎整个 PDF 都加载到内存中(对于 60M PDF 进程可能需要多达 300-400MB 的内存)。 最近的 iTe
我正在尝试使用 Python 对 Amazon 的 SimpleDB 服务进行 API 调用。例如,我使用的是最简单的请求 ListDomains。然而,无论我如何尝试,响应始终是“我们计算的请求签名
我的同事给了我一个Java项目来支持和增强。我需要签署 .jar 文件。我只找到了下一个文件:genkey.bat、project.cer、signjar.bat 和 keystore-jar.jar
目前我正在升级我的旧应用程序,它是使用 itextsharp 5.0.0 完成的到 5.4.5(最新)...但是我在获取等效代码时遇到了问题 PdfSignatureAppearance.SetCry
如果我有一个作为 API 请求发送的复杂对象(例如下面的订单),我应该在生成签名时包括所有属性还是应该只使用一个子集? 我问是因为我不清楚,而且从查看其他 API 的请求参数来看,请求参数是扁平和简单
为什么 WP7 项目不支持强名称签名?项目属性中没有签名选项卡。 无论如何,我已经使用 AssemblyInfo.cs 中的 AssemblyKeyFile 和 AssemblyDelaySign 属
我是一名优秀的程序员,十分优秀!