Tag: 代码签名

如何为Java 8u141签署Java Webstart应用程序?

看起来Oracle已经发生了类似于Java 7u45的更改,其中需要设置新的清单值来运行签名的Java Webstart应用程序(请参阅此处 )。 目前,我们使用Java 8u131签名的应用程序无法启动Java8u141,并显示错误消息Could not verify signing in resource: (arbitrary resource.jar) 您是否仍然可以使用Java 8u141运行已签名的Webstart应用程序,即我是否有特殊问题? 在发行说明中是对安全性更改的说明,但它们与代码签名无关。 加密路线图看起来像这个版本并没有真正改变代码签名,尽管例如Java 8u131,其中删除了MD5支持。 但是Java 8u131对我有用,Maven Java Webstart插件也使用SHA-256-Digest。

Java签名jar与服务器证书

是否可以使用服务器证书签署java Web启动应用程序? 我想知道的是它是否有效。 我的服务器有一个可靠的证书,我想重复使用相同的证书来签署一个应用程序。 现在,我有这个警告: 此jar包含其签名者证书的ExtendedKeyUsage扩展不允许代码签名的条目。 此jar包含签名者证书的NetscapeCertType扩展不允许代码签名的条目。 我是否可以启动我的应用程序,而不会警告证书不受信任?

什么阻止Javavalidation具有多个签名算法的签名jar

快速背景:我们发布了一个webstart应用程序,其中包括我们自己的应用程序jar和众多第三方jar。 Webstart要求jnlp文件引用的所有分布式jar都由单个证书签名。 因此,我们使用自签名证书签署所有jar子(我们的jar子和第三方jar子)。 一些第三方jar子已经由生产它们的一方签署,但我们只是再次签署它们,这很好。 到现在。 问题:我们最近从Java 6迁移到Java 7,突然webstart拒绝加载一些jar,抱怨:“无效的SHA1签名文件摘要”。 这只发生在一些jar子而不是其他jar子上,并且在那些失败的jar子中出现的共同线程似乎有多个签名。 在搜索SO和互联网之后,似乎Java的jarsigner的默认签名算法在Java 6和Java 7之间发生了变化,从SHA1到SHA256,并且各种人都建议使用“jarsigner -digestalg SHA1”来解决validation问题。 我试过了,果然我们的多重签名jar子validation了。 所以这似乎是我们问题的解决方法。 从我可以收集到的内容来看,第三方签名似乎是SHA1签名,我们使用默认签名 – SHA256进行签名 – 导致签名混合。 当我使用’-digestalg’开关强制SHA1时,我们有两个相同类型的签名,现在validation工作正常。 所以似乎问题是由多个签名使用不同的算法引起的? 或者是否还有其他一些我缺失的因素。 问题: 为什么无法使用SHA1 + SHA256validation,但使用SHA1 + SHA1进行validation? 有技术原因吗? 安全政策的原因? 为什么不能validation两个签名是否正确? 使用(继续使用)SHA1而不是现在默认的SHA256有什么缺点吗?

如何从GoDaddy导入证书以进行Java代码签名?

我需要能够使用来自CA的证书来签署jar文件。 我按照GoDaddy的文档说明如何执行此操作: http : //support.godaddy.com/help/article/4780/signing-java-code 但是,步骤3需要导入从GoDaddy网站获取的证书文件。 根据文档,命令是: keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer 虽然我成功提交了CSR(由keytool生成)并获得了响应,但我无法终身了解如何获取mycert.cer文件。 可以选择下载PEM文件。 但是在运行上面的命令后,我收到错误“keytool error:java.lang.Exception:Incomplete certificate chain in reply”。 我已多次尝试过,并仔细检查我是否正在使用正确的密钥库。 我甚至尝试过使用SSH-1重新键入一次,然后再使用SSH-2重新键入。 根据这个人( https://stackoverflow.com/questions/20793254/signing-a-jar-the-signers-certificate-chain-is-not-validated?rq=1 ),他们至少能够成功导入PEM文件。 但我不确定这是否是正确的方法。 GoDaddy的技术支持绝对可怕。 我所谈到的大多数技术人员根本不熟悉keytool,在他们转发给他们的SSL部门(480-505-8852)之前,我花了好几次尝试打电话给他们,这至少比一般情况要好一些。支持。 如果我使用Internet Explorer或Firefox,我相信我可以自动生成CSR而不是创建一个通过密钥工具。 然后我将通过Web浏览器导出证书。 从阅读各种其他在线文档,我相信我可以使用openssl转换为keytool的正确格式。 我不确定这将如何工作的细节,但我没有看到任何其他选择。 有没有人成功的这个或有任何指示如何进行? 我在这里找到了一个类似的问题( 使用GoDaddy的spc文件签署一个java小程序 ),但答案只是指向GoDaddy糟糕的文档。 如果可以的话,我会使用另一个CA,但我已经付了钱,经历了漫长而漫长的validation过程。

用于OS X Gatekeeper的代码签名Java应用程序

我正在尝试将Java应用程序分发给OS X用户。 我没有使用Mac商店 – 它将通过我自己的网站分发。 无论我尝试什么,OS X的Gatekeeper拒绝该应用程序。 这是我的方法: (1)像往常一样构建应用程序,获取一个JAR文件 (2)使用如下所述的appbundler : https : appbundler 。 这会在我的JAR周围创建一个运行良好的.app,并在MyApp.app/Contents/PlugIns目录中包含JVM。 (3)使用我的开发者证书签署应用程序: codesign -s ‘Developer ID Application: MyCompany Ltd’ –deep MyApp.app …过程成功完成 (4)确认.app将遵守关守的铁拳法则: spctl –assess –verbose=4 –type execute MyApp.app ……我得到的结果是: MyApp.app: a sealed resource is missing or invalid 对我来说似乎不是很啰嗦! 我能做错什么? 或者我如何获得更多信息? SO / Google搜索“密封的资源……”是指签名框架(我没有)或建议使用–force选项进行签名(我尝试但不起作用)。

Java 9弃用SHA1证书,还是其他问题?

[ 更新 ] Oracle刚刚修改了加密路线图( https://www.java.com/en/jre-jdk-cryptoroadmap.html ),他们不会弃用SHA-1进行协同编码: 2017-03-14 Target date changed from 2017-04-18 to 2017-07-18. Narrowed scope from all SHA-1 usage: only TLS will be affected, *code signing will not not be affected at this time*. 2017-03-14 Target date changed from 2017-04-18 to 2017-07-18. Narrowed scope from all SHA-1 usage: only TLS will be affected, *code […]

在OS X Mountain Lion上具有自签名证书的Java小程序

我们有一个需要以完全信任的方式运行的Java applet。 在开发和预发布测试期间,我们使用自签名证书对其进行签名(生产版本使用真实的代码签名证书进行签名)。 但是,当我们尝试在OS X 10.8的早期阶段启动自签名applet时,我们再也不能选择允许它运行了。 简单地禁用“允许”按钮: 如果我按“显示详细信息…”,我可以选择“始终信任”证书,但这没有区别: 它与OS X Lion 10.7上的相同版本的Java JRE一起使用,因此我怀疑它是操作系统的问题,而不是JRE。 有没有解决方法? 我不希望使用真正的代码签名证书进行测试:使用真实的代码签名证书进行签名意味着我的公司声称applet是安全的并且应该是可信的。 在我们测试它之前,我们很难断言。

如何validation签名的jar是否包含时间戳?

签名jar并使用-tsa选项后,如何validation时间戳是否包含在内? 我试过了: jarsigner -verify -verbose -certs myApp.jar 但输出没有指定时间戳的任何内容。 我问,因为即使我在-tsa URL路径中有拼写错误,jarsigner也会成功。 这是GlobalSign TSA URL: http : //timestamp.globalsign.com/scripts/timstamp.dll ,它背后的服务器显然接受任何路径(即timestamp.globalsign.com/foobar),所以最后我是不确定我的jar子是否加盖时间戳。

为JWS部署签署带有可信证书的jar文件

我开发了一个开源程序WPCleaner,它通过Java Web Start分发。 当前版本可从http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlp获取 随着Java的最新更新,当您需要应用程序具有一些权限(写入首选项,访问其他网站,……)时,通过Java Web Start部署Java应用程序变得越来越困难。 我的应用程序是自签名的,之前还可以,但是新的更新要求用户在每次运行时都接受应用程序,而不仅仅是一次性,如果他们愿意的话。 所以,我决定使用可信证书来签署我的申请。 我从Certum得到了一个(显然,他们对开源开发人员是免费的),继这个讨论之后: 开源项目的代码签名证书? 我已经生成了一个新的jar文件,使用此证书签名(jar文件可从http://site4145.mutu.sivit.org/WikiCleaner/WikipediaCleanerTest.jar获得 ),但我仍有问题:当我通过JWS启动应用程序时,Java仍然会显示一个警告窗口,让我一劳永逸地信任该应用程序。 编辑器仍然显示为UNKNOWN,但是当我查看消息的详细信息时,这是我从Centrum使用的新证书。 有没有人知道我做错了什么? 我认为拥有来自可信CA的证书(Centrum似乎是在Java cacerts中)将允许用户一劳永逸地接受证书。 谢谢 PS:当我运行jarsigner -verify ,我收到以下警告“此jar包含其证书链未经过validation的条目。”

如何以编程方式validation使用jarsigner签名的jar

我想使用jarsigner签署一个jar,然后使用一个Java应用程序validation它,该应用程序没有签名的jar作为其类路径的一部分(即只使用jar的文件系统位置) 现在我的问题是从jar中获取签名文件,有一个简单的方法吗? 我玩过Inflater和Jar InputStreams没有运气。 或者这是可以更好地完成的事情吗? 谢谢