2012-02-17 20 views
1

我試圖發送S/Mime簽名和加密的電子郵件。S/Mime登錄PHP - 哪個文件是哪個證書?

我有這樣的代碼:

// Sign the message first 
openssl_pkcs7_sign("inc/admin/email/body.txt","inc/admin/email/body/enc.txt", 
"signing_cert.pem",array("private_key.pem", 
"test"),array()); 

// Get the public key certificate. 
$pubkey = file_get_contents("cert.pem"); 

//encrypt the message, now put in the headers. 
openssl_pkcs7_encrypt("signed.txt", "enc.txt", $pubkey,$headers,0,1); 

我的問題是其證書是哪個?如果我使用我有證書(這是正確的),我有文件是:

  • .KEY
  • 的.csr
  • .CRT
  • 和公衆。質子交換膜。

哪個是哪個?

回答

1

一般來說,PEM可以是私鑰,公鑰和證書。 它顯示你是如何創建/獲得證書的。

但在你的情況,我希望以下內容: CSR =證書籤名請求,你沒用,現在 CRT =證書 KEY =私鑰 PEM =公鑰/證書

0

首先,證書不是「SSL證書」。這是一個誤導性的術語,會導致您誤用。

每個X.509證書都具有預期的用途(如在密鑰用法和擴展密鑰用法字段中定義的)。爲安全SSL服務器頒發的證書不能用於S/MIME,反之亦然(除非您構建了一些不關心密鑰用法的自定義基礎結構)。

現在,您使用您的證書和私鑰簽名,但使用收件人證書(其中包含公鑰)進行加密。如果您只有一個CRT/KEY文件對,則可能是您的證書和您的私鑰,您可以使用它們進行簽名。但是,除非您爲自己加密信息(即您是加密信息的收件人),否則使用您的證書進行加密是沒有意義的。

+0

我知道,在這個階段,我只是想讓它工作。 – 2012-02-17 12:15:49