2011-09-13 7 views
3

単純なJavaベースのSMTPクライアントにTLSサポートを追加する必要があります。クライアントはjava.net.Socketを介してSMTPプロトコルを実装します。つまり、Javaメールやその他の高水準APIは使用しません。BouncyCastleの軽量TLS APIを使用するSMTPクライアント

BouncyCastleの軽量TLS APIをこのタスクに使用したいと思います。私は例を探していましたが、あまり見つけられませんでした。誰もポインタを与えることができますか?

+0

なぜですか?なぜJSSEを使用しないのですか?それは10年間にわたって組み込まれています。 – EJP

+0

これは、JSSEが利用できない組み込みハードウェア上で動作します。 – Grodriguez

答えて

5

これは私が予想したよりはるかに簡単だったことが分かります。これに

Socket s = new Socket(server, port); 
InputStream is = s.getInputStream(); 
InputStream os = s.getOutputStream(); 
[...] 

::私はちょうどこのことから、元のSMTPクライアントのコードを変更することで、SMTPメールサーバへの安全なSSL接続を確立でき

サーバの証明書がまだ検証されていない

Socket s = new Socket(server, port); 
TlsProtocolHandler handler = new TlsProtocolHandler(s.getInputStream(), 
                s.getOutputStream()); 
handler.connect(new AlwaysValidVerifyer()); 
InputStream is = handler.getInputStream(); 
InputStream os = handler.getOutputStream(); 
[...] 
AlwaysValidVerifier何かを受け入れるダミーベリファイアです)、これは既に良いスタートです。

+0

私はこの方法でも、ライブラリのC#版で行く必要があります。 ハンドシェイクフェーズは正常になり、証明書にアクセスできますが、その後、このセキュアな接続でhttpメッセージを正しく送受信できません。何か問題がありましたか? 私は、DataWriter/DataReaderと共にハンドラで提供されているストリームを使用しようとしていますが、非同期操作で 'await'を実行すると常にタイムアウトが発生します。 問題の可能性について考えていますか? –

+0

いいえ、ごめんなさい。上記の私はSMTP + TLSのために働いて、決してHTTPを試してみました。 – Grodriguez

関連する問題