我需要能够使用来自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错误:java.lang.Exception:证书链不完整”。我已经尝试了多次,然后再次检查我是否使用了正确的密钥库。我什至尝试过一次使用SSH-1和第二次使用SSH-2来重新输入密钥。,他们至少能够成功导入PEM文件。但是我不确定这是否是正确的方法。
GoDaddy的技术支持绝对令人恐惧。我与之交谈的大多数技术人员根本都不熟悉keytool,在将我转交给SSL部门(480-505-8852)之前,我花了好几次尝试打电话给他们,这至少比一般的技术要好支持。
如果使用Internet Explorer或Firefox,我相信我可以自动生成CSR,而不必通过密钥工具创建CSR。然后,我将通过网络浏览器导出证书。通过阅读其他各种在线文档,我相信我可以使用openssl将其转换为keytool的正确格式。我不确定这将如何工作的详细信息,但是我看不到其他任何选择。
有没有人成功做到这一点,或者对如何进行有任何指示?我在这里找到了类似的问题(使用GoDaddy的spc文件对Java applet进行签名),但答案只是将我引到了GoDaddy的文档欠佳。如果可以的话,我会使用另一个CA,但是我已经付了钱,并经历了漫长而冗长的验证过程。
解决方法是与GoDaddy联系,并让他们重新颁发您组织的证书。在证书设置过程中,必须选择SHA-1代码签名证书,而不是SHA-2。仅当您的证书有效期未延至2016年(请参阅下文)时,才选择SHA-1的选项才可用,因此请 确保他们了解您的最终目标是将SHA-2证书重新创建为SHA-1,以便他们知道向您出售具有正确有效期的证书。
今天,我将SHA-2证书换成了SHA-1,而GoDaddy的Java代码签名指令非常有效。
GoDaddy通知我Keytool可能无法导入从其SHA-2(2048长)代码签名证书生成的证书响应链。我保留对Keytool的判断,因为当根据@mogsie的答案从pem文件中删除GoDaddy的根SHA1证书时,它可以很好地导入SHA-2证书。
当GoDaddy授予代码签名证书(将延续到2017年)时,它将自动使用SHA-2,因为Microsoft从2016年1月1日开始不会接受少于SHA-2的证书,因此,如果您打算购买SHA-1证书,它将具有短期有效性。
通过Java Keytool更新(我正在使用1.6),或者如果GoDaddy的Sha256withRSA自签名证书受到广泛信任,该问题可能会消失。