Certificate
keytool 錯誤:證書回復不包含公鑰
我最近從 GoDaddy 購買了一個證書,用於對 Adobe Air 應用程序進行編碼簽名。
我生成了一個 CSR(程式碼簽名請求)文件並將其發送給他們。他們發回了一個 .spc 證書文件(PKCS #7 格式)。
我正在使用 Adobe Air 附帶的 keytool。這是我使用過的命令。
生成企業社會責任:
"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>
就我而言,我使用的是不同的證書頒發機構 Thawte。問題的原因是,當我去 Thawte 證書網站取我新頒發的證書時,該網站說我的證書可以下載了,但奇怪的是他們預設選擇了一個不同的,兩歲的證書,而不是剛剛頒發的證書。所以,我下載了錯誤的證書。直到我這樣做:
keytool -printcert -v -file the-pkcs7-file
看到證書上的舊日期,我意識到發生了什麼。然後我下載了正確的 PKCS7 證書文件。