我试图使用本指南与我们公司的.pfx证书签署一个jar applet存档
(以及其他来自互联网的人):
http://www.globalsign.com/support/ordering-guides/SignJavaCodeAppletsPFX.pdf
一切似乎都很好,但是当我尝试通过浏览器运行苹果时,我看到了这一点 '发布者'是未知的(不可信)。当我进入细节时,我能够看到合适的公司 名称和证书供应商(GlobalSign)。为什么它没有正确显示为已知/可信?
对我来说可疑的一件事是输出命令
jarsigner -verify -verbose -certs Applet.jar:
(...)
sm 1936 Wed Apr 13 03:00:50 CEST 2011 org/my/Applet.class
X.509, CN=CompanyName, O=CompanyName, L=Tilst, ST=ProperState, C=DK
[certificate is valid from 18.02.10 14:58 to 18.02.13 14:58]
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
所以看起来'k =在密钥库中找到至少一个证书'缺失了 (应该是smk,它是sm)。它仅部分签名吗?或者是什么?
GlobalSign给我的.pfx文件是否有可能是错误的 还不足以签署小程序?对于普通的可执行文件,它工作得很好......
有什么想法吗? ;)
编辑
@Jcs
看起来你完全正确。我用keytool检查了我的PFX文件,然后得到:
Your keystore contains 1 entry
Alias name: company_alias
Creation date: Apr 13, 2011
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
看起来链条不完整 我不确定它是否重要,但也有一些扩展,例如:
#1: ObjectId: (some_numbers_here) Criticality=true
KeyUsage [
DigitalSignature
]
#2: ObjectId: (some_numbers_here) Criticality=false
AuthorityInfoAccess [
[
accessMethod: (some_numbers_here)
accessLocation: URIName: http://secure.globalsign.net/cacert/ObjectSign.crt]
]
(...)
问题是:我的PFX文件是完全错误的,还是以某种方式我需要将globalsign root添加到它?
答案 0 :(得分:2)
根据您的帖子,似乎签名证书链中只有一个证书。我验证了我签名的applet(这个applet在浏览器中正常工作)
(...)
sm 2419 Thu Mar 31 15:49:14 CEST 2011 org/xml/sax/helpers/XMLReaderFactory.class
X.509, CN=Company Name, O=Company Name, L=Paris, ST=Ile de France, C=FR
[certificate is valid from 8/4/10 2:00 AM to 8/4/12 1:59 AM]
X.509, CN=Thawte Code Signing CA - G2, O="Thawte, Inc.", C=US
[certificate is valid from 2/8/10 1:00 AM to 2/8/20 12:59 AM]
[KeyUsage extension does not support code signing]
(...)
我们可以看到链中有2个证书,因为我的签名证书已由 Thawte Code Signing CA 签发。
在您的情况下,如果jarsigner
输出中只有一个证书,则可能表示缺少中间CA,我几乎不怀疑GlobalSign是否直接从根CA(在Java信任中)颁发证书商店)。因此,当加载applet并验证签名时,JVM无法在签名证书和GlobalSign根CA之间重建证书链,从而解释当前行为。
也许PKF文件不包含该中间CA.使用OpenSSL
,您可以检查存在多少个证书:
[jcs@home:~/]$ openssl pkcs12 -in myfile.pfx
或keytool
[jcs@home:~/]$ keytool -list -v -storetype pkcs12 -keystore myfile.pfx
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 1 entry
Alias name: 2
Creation date: Aug 4, 2010
Entry type: PrivateKeyEntry
Certificate chain length: 2 <-- the chain length is here.
Certificate[1]:
(...)
答案 1 :(得分:0)
非常感谢所有人,尤其是Jcs :) 我终于发现.pfx文件刚刚导入不正确 我让我的老板从头开始为我导入所有可能的路径/链/证书,现在它可以工作:) 因此,如果有人会有类似的问题,我的建议是再次尝试获取/导入证书 - 证书本身比使用签名方法更有问题。