2011-01-13 57 views
13

我在.spc文件中擁有GoDaddy頒發的代碼簽名證書。另外,我在.key文件中有一個私鑰。代碼簽名大約在13個月前發佈,然後過期並由GoDaddy續簽。在更新過程中,沒有請求私鑰,只有一個新的.spc文件存在問題。將GoDaddy發佈的.spc和.key文件加入完整的.pfx/.cer證書

現在我遇到了將問題證書加入原始私鑰文件以形成適合安裝到Windows證書存儲區的.pfx(或.cer?)文件的問題。

我嘗試的命令是:

openssl.exe pkcs12 -inkey my.key -in my.spc -out my.pfx -export 

但是,我得到讀取「沒有證書的私鑰匹配」的錯誤消息。

我按照this answer on SO驗證.key文件是一個有效的私鑰。然而,當我嘗試驗證.spc是一個有效的證書,我只是得到

unable to load certificate 
5436:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:650:Expecting: TRUSTED CERTIFICATE 

什麼是生產從我輸入的.pfx文件的正確方法是什麼?我正在使用OpenSSL 0.9.8k。

+0

是否使用IE8 PFX文件? Godaddy代碼簽名腳本不適用於IE8。使用firefox – Nick 2011-01-13 16:55:39

+1

不。我正在使用Chrome 9和FireFox 9.不過,我看不到IE8和我的問題之間的任何連接。 – 2011-01-13 17:30:42

回答

25

最後我設法弄清楚了一個可行的程序。以下是從SPC和KEY文件生成新的PFX和CER代碼簽名證書的步驟:

  1. 從GoDaddy獲取新的CodeSign.spc證書。
  2. 出口從過期PFX一個PEM格式的私鑰:

    openssl.exe pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem 
    
  3. 轉換的PEM格式的私鑰到PVK格式:

    pvk.exe -in CodeSign.pem -topvk -strong -out CodeSign.pvk 
    
  4. 合併PVK和SPC成PFX:

    pvk2pfx.exe -pvk CodeSign.pvk -pi <passphrase> -spc CodeSign.spc -pfx CodeSign.pfx -po <passphrase> -f 
    
  5. 將生成的PFX文件導入到Windows證書存儲。記得把它導出。

  6. 將其從證書庫導出爲二進制CER格式,如CodeSign.cer
  7. (可選)從Windows證書存儲中刪除證書。

如果您要定期更新證書,可以存儲PVK文件並跳過步驟(2)和(3)。

UPDATE:如果你碰巧在CRT的替代SPC格式的證書,請執行下列操作,轉變爲SPC:

openssl crl2pkcs7 -nocrl -certfile CodeSign.crt -outform DER -out CodeSign.spc 

來源:

的工具,你將需要:

  • OpenSSL
  • pvk.exe - 看到這頁
  • pvk2pfx.exe底部的下載鏈接 - 微軟軟件開發工具包的一部分,與Visual Studio 2010
  • 一起安裝
+0

此答案不包含有關如何使用原始問題中提到的.key文件的信息。在上述過程中,您是否不需要使用.key文件? – 2014-01-10 15:41:38

3

當前的答案帖子對於我在從GoDaddy過期的證書文件(.pfx或.p12)移動到新的最後步驟中非常有幫助,但是我發現它缺少有關初始步驟的信息如何從我的原始證書文件生成證書籤名請求(CSR)。

爲別人尋找類似信息,這裏是我最終使用...

獲取私鑰:

openssl pkcs12 -in certs-and-key.p12 -out privateKey.key 

獲取certificatate:

請注意:這可以給你CA證書

openssl pkcs12 -in certs-and-key.p12 -out certificate.crt -nokeys 

更好:使用此命令只打印客戶端證書

openssl pkcs12 -in MacCossLabUW.p12 -clcerts 

然後之間的輸出複製:

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 

保存到一個名爲certificate.crt

文件現在檢查私鑰和證書與命令匹配:

openssl rsa -noout -modulus -in privateKey.key | openssl md5 
openssl x509 -noout -modulus -in certificate.crt | openssl md5 

然後生成一個新的CSR:

openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key 

使用CSR重新輸入證書。

下載GoDaddy軟件發佈證書(.spc)文件。

驗證生成的證書請求私有密鑰相匹配:

openssl pkcs7 -inform DER -in certificate.spc -print_certs 

然後將輸出複製您的證書之間(注:輸出也將包含CA證書):

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 

保存到一個名爲certificate-new.crt的文件

並運行命令:

openssl x509 -noout -modulus -in certificate-new.crt | openssl md5 

輸出應該與以前使用私鑰和請求證書的調用相匹配。

要完成該過程,請按照pvk2pfx答案中概述的步驟操作。

我也發現了這個帖子示意圖非常有幫助:

PVK2PFX Error 0x80070490 - Cannot find certificates that match the key

0

如果從IIS生成證書請求(我在Windows上這樣做的IIS 2012服務器),請在服務器上執行這些步驟打開IIS - - 單擊頂級節點上(服務器節點) - 打開服務器證書設置 - 點擊「完成證書申請」下行動的權利 - 匯入SPC文件,你產生的請求 /PC到服務器。

從這裏你可以再出口到

相關問題