此代码签名证书对签名小程序有效吗?

Posted

技术标签:

【中文标题】此代码签名证书对签名小程序有效吗?【英文标题】:Is this code signing certificate valid for signing applets? 【发布时间】:2014-03-14 21:38:41 【问题描述】:

我们购买了用于签署小程序的代码签名证书,但在签署小程序时出现以下错误。

    C:\CM\WEB-INF>jarsigner -keystore code_signing.keystore C:\CM\SweetApplet.jar code_signing_real
Enter Passphrase for keystore:
    jarsigner: Certificate chain not found for: code_signing_real.  code_signing_real must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

我们的证书不正确吗?这是下面有问题的证书。错误消息似乎表明证书必须包含私钥,但我们不明白这是怎么回事,因为私钥不应该暴露给除我们之外的任何人。

C:\CM\WEB-INF>keytool -list -keystore code_signing.keystore -alias code_signing_real -v
Enter keystore password:
Alias name: code_signing_real
Creation date: Mar 13, 2014
Entry type: trustedCertEntry

Owner: CN=CE, OU=CE, O=CE, L=PAL
O ALTO, ST=California, C=US
Issuer: CN=Thawte Code Signing CA - G2, O="Thawte, Inc.", C=US
Serial number: 728b78e4ded46af26494c59690e428f0
Valid from: Wed Mar 12 17:00:00 PDT 2014 until: Fri Mar 11 15:59:59 PST 2016
Certificate fingerprints:
         MD5:  E0:DB:9E:DC:37:1E:C2:A9:EA:C0:A8:21:22:61:9F:DD
         SHA1: F9:C3:75:37:CA:86:4D:E2:11:BE:52:79:CE:FA:B3:6B:32:F0:CF:D2
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:false
  PathLen: undefined
]

#2: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [accessMethod: 1.3.6.1.5.5.7.48.1
   accessLocation: URIName: http://ocsp.thawte.com]
]

#3: ObjectId: 2.5.29.4 Criticality=false

#4: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: http://cs-g2-crl.thawte.com/ThawteCSG2.crl]
]]

#5: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
  1.3.6.1.4.1.311.2.1.22
]

#6: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
NetscapeCertType [
   Object Signing
]

【问题讨论】:

【参考方案1】:

它没有说证书必须包含私钥。证书不包含私钥。再读一遍。它说密钥条目必须包含一个私钥一个证书。

所以无论你如何构建这个 KeyStore,它都是无效的。可能您刚刚将签名证书导入到新的 KeyStore 中,或者使用了新的别名。您必须将其导入到私钥所在的原始 KeyStore 中,并使用与私钥相同的别名。

您还必须将证书链作为受信任的 CA 证书导入另一个别名。

【讨论】:

是的,就是这样。经过数小时的头撞后,我们终于通过这个 URL support.globalsign.com/customer/portal/articles/1352403 找到了答案。希望我们早点发布这个问题,你有机会早点回答。 :) 其实我早就睡着了。但答案在 JSSE 参考指南中。 对我来说,Crashalot 的评论是正确的答案! support.globalsign.com/customer/portal/articles/1352403

以上是关于此代码签名证书对签名小程序有效吗?的主要内容,如果未能解决你的问题,请参考以下文章

Comodo 的代码签名证书是不是有效?

Adobe AIR - 自签名应用程序可以吗?

Adobe AIR-无法为签名者建立有效的证书链

我无法对我的 iOS 应用程序进行代码签名

即使有有效的链接证书,也缺少代码签名证书

每个 .exe 代码签名操作都需要 Digicert USB 令牌吗? (EV代码签名证书)