我有一个applet,它由以下证书链签名:
Softkey-Kazakhstan (JCE Code Signing CA)
Subject: CN=Softkey-Kazakhstan,OU=Java Software Code Signing,O=Sun Microsystems Inc
Issuer: CN=JCE Code Signing CA,OU=Java Software Code Signing,O=Sun Microsystems Inc,L=Palo Alto,ST=CA,C=US
JCE Code Signing CA (JCE Code Signing CA)
Subject: CN=JCE Code Signing CA,OU=Java Software Code Signing,O=Sun Microsystems Inc,L=Palo Alto,ST=CA,C=US
Issuer: CN=JCE Code Signing CA,OU=Java Software Code Signing,O=Sun Microsystems Inc,L=Palo Alto,ST=CA,C=US此applet包含自定义加密提供程序实现和一些额外的帮助器jars。它必须能够处理本地文件和USB设备。
Java抱怨它不知道这个证书。Root证书似乎是Sun用于代码签名的合法证书,java应该知道它,但由于某些原因,它不知道。
我应该怎么做,这样java就不会抱怨这个小程序了?我应该提取这个根证书JCE代码签名CA并将其安装到$JRE/lib/security/cacerts中吗?
发布于 2013-11-28 11:34:32
这是个好问题。此证书是自签名的,而不是Java tursted CA (仙人掌)中的正式证书。我已经发现,即使证书过期了(如果没有签名,密码扩展也能工作)。因此,我假设JCE要求密码提供者使用"JCE代码签名CA“进行签名,但并不关心该证书的有效性(可能是由JCE在内部检查,而不使用仙人掌)。我也知道这里不是这样的。问题在于javaws (JNLP发行版),它需要用可信链对jars进行签名。此外,Oracle还强调,关于JCE代码签名证书,“证书将不能用于部署目的”(参见:这里)。但如果它必须存在于分销中呢?就像我说的:好问题。
编辑:结论: 1.密码提供者必须用"JCE代码签名CA“签名,而不是必要的有效。2.如果分发用"JCE代码签名CA“签名的jar,则证书必须有效。JCE符号不足以分发,但如果存在,则必须有效。
https://stackoverflow.com/questions/20218467
复制相似问题