2011-11-25 12 views
0

私が達成したいのは、署名されたメールを送信して、ユーザーのメールクライアントがそのようなメールを信頼できるものとして表示できることです(Thunderbirdなどでメールが閉鎖された封筒アイコンで表示されることがあります)。PHPを使用して署名付きのメールを送信

署名された電子メールを送信するはずのPHPMailerライブラリが見つかりましたが、openssl_pkcs7_sign PHP関数をラップすると思います。関数の引数であるキーと証明書を取得して使用する方法がわかりません。パラメータには$ signcertと$ privkeyがあります。私が理解しているところでは、$ signcertは、メッセージが正しく署名されたことを検証するために使用される公的に知られている証明書でなければなりません。 $ privkeyは証明書と結びついたもので、秘密にしておくと電子メールに署名するのに使われます。これまで正しい?

私の問題は、適切な証明書を取得する方法です。私はOpenSSLは私自身の証明書を生成することができますが、私のニーズに十分な証明書ですか?そうであれば、どうすればそれらを正しく生成できますか?私は、異なる長さの証明書と、重要であり、私が気づいていない他のオプションがあるかもしれないことを意味します。ところで、「https」という自己署名証明書がブラウザで警告を発することに気付きました。メールでも同じことが起こりますか?その場合、おそらく私は信頼できる証明センターから証明書を購入する必要があります。あなたは私が考慮すべきセンターのアドバイスをくれますか?

+1

http://kb.mozillazine.org/Getting_an_SMIME_certificateちょうどFYI - セキュアな電子メールが普遍HTTPSとは異なり、サポートされていません。これは、ほとんどの場合、メールシステムのかなりの部分が自動的にサポートされないためです(Outlookは、たとえば、有効になっていても有効になっていません)。代わりに、あなたは[Hushmail](http://www.hushmail。com /)であり、これはこれを一貫して達成するための仲介システムを提供する。ただし、サーバーにメールを送信してそのサーバーだけで解読できる(ユーザーの個人証明書ではない)場合、それは本質的に安全ではないと考えてください。 –

答えて

1

ここで[1]電子メールの署名に使用された証明書は、証明機関によって発行されなければならないことを意味します(電子メールクライアントは警告を出さない)。無料の証明書を発行するいくつかの当局のリストは、ここで見つけることができます:[2]。私が選んだのは、証明書をWebブラウザに直接インストールすることです。だからもっと何かをするには、それをエクスポートする必要があります。一般的な形式は* .p12で、公開鍵と秘密鍵の両方を格納できます。しかし、PHP関数openssl_pkcs7_sign()を使用して、両方の証明書でファイルの引数を指定しても機能しないようです - OpenSSLはあいまいなエラーerror:0906D06C:PEM routines:PEM_read_bio:no start lineを返します。鍵を分離した後(OpenSSLを使用)、署名は正常に機能します。

ところで、PHPMailerは電子メールを歌うことができますが、現在のバージョンは動作しません。メールが署名され、一時ファイルに保存され、ファイルが削除された後、ファイルの内容が送信されます(メッセージは空です)。 [1]

からhttp://kb.mozillazine.org/Message_security

[2] -

2

私は自分の証明書を生成することができますが、私のニーズに十分な証明書ですか?

あなたのニーズはわかりません。

独自の証明書は、メッセージの署名には役に立たない。この値は、送信者と受信者の両方が受け入れ可能な第三者によって証明書が認証されている(検証可能な)場所になります。この第三者は認証機関(Thawte、Verisignなど)ですが、組織内では独自のCAを提供するだけで十分です。 OpenSSLのドキュメントでは、他の証明書に署名するために使用できる独自のCA証明書を作成する方法を詳しく説明しています。

あなたはどんなコードを実装することもできるようになる前に、あなたに先んじて長い学習の旅があります。あなたはopenssl howtoとx509 cerfo howtoで始めるよりも悪い可能性があります。

+0

ちょうど不思議なことに、さまざまな暗号技法(できれば視覚化)を説明するのに役立つ良い本を知っていますか?私は理解を深めようと努力しており、私が探しているものは見つけられません。 –

関連する問題