1

S/Mime で署名および暗号化された電子メールを送信しようとしています。

私はこのコードを持っています:

// 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);

私の質問は、どの証明書がどれですか? 私が持っている証明書を使用する場合(これは大丈夫ですか)、私が持っているファイルは次のとおりです。

  • 。鍵
  • .csr
  • .crt
  • およびパブリック.pem。

どれがどれですか?

4

2 に答える 2

1

一般的に言えば、PEM は秘密鍵、公開鍵、および証明書にすることができます。証明書をどのように作成/取得したかによって異なります。

しかし、あなたの場合、私は次のことを期待しています: CSR = 証明書署名要求、今は役に立たない CRT = 証明書 KEY = 秘密鍵 PEM = 公開鍵/証明書

于 2012-02-17T11:17:35.980 に答える
0

まず、証明書は「SSL証明書」ではありません。これは、誤った使用につながる誤解を招く用語です。

各 X.509 証明書には、使用目的があります (キー使用法フィールドと拡張キー使用法フィールドで定義されています)。SSL サーバーを保護するために発行された証明書は S/MIME には使用できず、その逆も同様です (キーの使用法を気にしないカスタム インフラストラクチャを構築しない限り)。

ここで、証明書と秘密鍵を使用して署名しますが、受信者の証明書 (公開鍵を含む) を使用して暗号化します。CRT/KEY ファイルのペアが 1 つしかない場合、それはおそらく証明書とそれに応じた秘密鍵であり、署名に使用できます。しかし、自分でメッセージを暗号化しない限り (つまり、暗号化されたメッセージの受信者である場合)、証明書を使用した暗号化は意味がありません。

于 2012-02-17T11:27:15.530 に答える