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

标签 java certificate code-signing keytool

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

5年前关闭。




Improve this question




我需要能够使用来自 CA 的证书对 jar 文件进行签名。

我按照 GoDaddy 文档中有关如何执行此操作的说明进行操作:
http://support.godaddy.com/help/article/4780/signing-java-code

但是,第 3 步需要导入从 GoDaddy 网站获取的证书文件。根据文档,命令是:

keytool -import -trustcacerts -keystore codesignstore -storepass <yourstorepwd> -alias codesigncert -file mycert.cer

尽管我成功提交了 CSR(由 keytool 生成)并得到了回复,但我终生无法弄清楚如何获取 mycert.cer 文件。可以选择下载 PEM 文件。但是在运行上述命令后,我收到错误“keytool error: java.lang.Exception: Incomplete certificate chain in reply”。我已经多次尝试过,并仔细检查过我使用的是正确的 keystore 。我什至尝试过一次使用 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,而不是通过关键工具创建一个。然后我会通过网络浏览器导出证书。通过阅读其他各种在线文档,我相信我可以使用 openssl 将 keytool 转换为正确的格式。我不确定这将如何工作的细节,但我没有看到任何其他选项。

有没有人在这方面取得成功或有任何关于如何进行的指示?我在这里发现了一个类似的问题( Signing a java applet with an spc file from GoDaddy ),但答案只是将我指向了 GoDaddy 糟糕的文档。如果可以,我会使用另一个 CA,但我已经付了钱并经历了漫长而漫长的验证过程。

最佳答案

解决方法是联系 GoDaddy 并让他们重新颁发您组织的证书。在证书设置过程中,您必须选择 SHA-1 协同签名证书而不是 SHA-2。选择 SHA-1 的选项仅在您的证书有效期未延长至 2016 年(见下文)时才可用,因此 确保他们了解您的最终目标是将您的 SHA-2 证书重新创建为 SHA-1,以便他们知道向您出售具有正确有效期的证书。

我今天将我的 SHA-2 证书换成了 SHA-1,并且 GoDaddy's Java Code Signing instructions完美地工作。

GoDaddy 告知我,Keytool 可能无法导入从其 SHA-2(2048 长度)代码签名证书生成的证书响应链。我保留对 Keytool 的判断,因为当 GoDaddy 的根 SHA1 证书根据 @mogsie 的回答从 pem 文件中删除时,它可以很好地导入 SHA-2 证书。

当 GoDaddy 授予将延续到 2017 年的协同设计证书时,它会自动采用 SHA-2,因为 Microsoft 不会接受低于 SHA-2 的开始 January 1, 2016 ,因此如果您在市场上购买 SHA-1 证书,它的有效期将是短期的。

该问题可能会随着 Java Keytool 更新(我正在使用 1.6 版)而消失,或者如果 GoDaddy 的 Sha256withRSA 自签名证书得到广泛信任。

关于java - 如何从 GoDaddy 导入证书以进行 Java 代码签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20896880/

相关文章:

android - 我可以访问 Android 中没有的 Java API 和包吗?

java - Vaadin,在哪里放图片?

用于代码签名混淆的 ios 证书

c++ - CertGetCertificateChain 带有支持的内存存储和证书信任列表

objective-c - 代码签名错误 : Certificate identity appears more than once in the keychain

ios - Enterprise Distribution 在 Swift App 中与 iOS8 的配合不佳

java - 如何在应用某些函数后有效地计算集合的最大值

java - 具有 2 个不同数据的 JTable

java - 正在使用哪个cacert?

java - 需要帮助在 tomcat 中调试 SSL 握手