keytool 错误:证书答复不包含公钥

keytool 错误:证书答复不包含公钥

我最近从 GoDaddy 购买了证书,用于对 Adob​​e Air 应用程序进行编码签名。

我生成了一个 CSR(代码签名请求)文件并将其发送给他们。他们发回了一个 .spc 证书文件(PKCS #7 格式)。

我使用的是 Adob​​e Air 自带的 keytool。以下是我使用过的命令。

生成 CSR:

"C:\Program Files (x86)\Adobe\Flex Builder 3\jre\bin\keytool.exe" -genkey -alias codesigncert -keypass password123 -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore

将证书导入密钥库:

"C:\Program Files (x86)\Adobe\Flex Builder 3\jre\bin\keytool.exe" -import -alias codesigncert -file cert.spc -keystore codesignstore

运行此命令后我收到的错误是:

keytool error: java.lang.Exception: Certificate reply does not contain public key for <codesigncert>

可能出了什么问题?

我遵循的指南是这样的: http://help.godaddy.com/article/4780

答案1

答案很简单。证书文件不是由 CSR 文件生成的,而是由另一个 CSR 文件生成的。我只是获得了一个新证书,它就起作用了。

将证书导入密钥库后,我就可以运行以下命令来签署 Adob​​e Air 中间文件。

adt -sign -alias codesigncert -storetype jks -keystore codesignstore -storepass storepass123 -keypass password123 "C:\myapp\widget.airi" "C:\myapp\widget.air"

答案2

我遇到了类似的问题;颁发的证书和证书请求文件不匹配导致错误消息:

keytool error: java.lang.Exception: Certificate reply does not contain public key for <xyzzy>

就我而言,我使用的是另一个证书颁发机构 Thawte。问题的原因是,当我访问 Thawte 证书网站领取新颁发的证书时,该网站显示我的证书已准备好下载,但奇怪的是,他们默认选择了一个不同的两年前的证书,而不是刚刚颁发的证书。所以,我下载了错误的证书。直到我这样做:

keytool -printcert -v -file the-pkcs7-file

看到证书上的旧日期后,我意识到发生了什么。然后我下载了正确的 PKCS7 证书文件。

相关内容