我最近从GoDaddy购买了一个用于编码签署Adobe Air应用程序的证书。
我生成了一个CSR(代码签名请求)文件并发送给他们。 他们已经发回一个.spc证书文件(PKCS#7格式)。
我正在使用Adobe 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
答案很简单。 证书文件不是由CSR文件生成的,而是由不同的CSR文件生成的。 我只是得到了一个新的证书,它的工作。
一旦将证书导入到密钥库中,我就可以运行以下命令来签署Adobe Air中间文件。
adt -sign -alias codesigncert -storetype jks -keystore codesignstore -storepass storepass123 -keypass password123 "C:\myapp\widget.airi" "C:\myapp\widget.air"
我也有类似的问题。 发出的证书和证书请求文件之间的不匹配导致错误消息:
keytool error: java.lang.Exception: Certificate reply does not contain public key for <xyzzy>
就我而言,我正在使用不同的authentication机构Thawte。 问题的原因是,当我去Thawte证书网站拿起我的新签发的证书时,网站说我的证书已经准备好下载了,但是好奇地默认他们选了一个不同的两岁证书,而不是刚发布的证书。 所以,我下载了错误的证书。 直到我做了:
keytool -printcert -v -file the-pkcs7-file
看到证书上的旧date,我意识到发生了什么事。 然后我下载了正确的PKCS7证书文件。