単純なJavaベースのSMTPクライアントにTLSサポートを追加する必要があります。クライアントはjava.net.Socketを介してSMTPプロトコルを実装します。つまり、Javaメールやその他の高水準APIは使用しません。BouncyCastleの軽量TLS APIを使用するSMTPクライアント
BouncyCastleの軽量TLS APIをこのタスクに使用したいと思います。私は例を探していましたが、あまり見つけられませんでした。誰もポインタを与えることができますか?
単純なJavaベースのSMTPクライアントにTLSサポートを追加する必要があります。クライアントはjava.net.Socketを介してSMTPプロトコルを実装します。つまり、Javaメールやその他の高水準APIは使用しません。BouncyCastleの軽量TLS APIを使用するSMTPクライアント
BouncyCastleの軽量TLS APIをこのタスクに使用したいと思います。私は例を探していましたが、あまり見つけられませんでした。誰もポインタを与えることができますか?
これは私が予想したよりはるかに簡単だったことが分かります。これに
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
何かを受け入れるダミーベリファイアです)、これは既に良いスタートです。
私はこの方法でも、ライブラリのC#版で行く必要があります。 ハンドシェイクフェーズは正常になり、証明書にアクセスできますが、その後、このセキュアな接続でhttpメッセージを正しく送受信できません。何か問題がありましたか? 私は、DataWriter/DataReaderと共にハンドラで提供されているストリームを使用しようとしていますが、非同期操作で 'await'を実行すると常にタイムアウトが発生します。 問題の可能性について考えていますか? –
いいえ、ごめんなさい。上記の私はSMTP + TLSのために働いて、決してHTTPを試してみました。 – Grodriguez
なぜですか?なぜJSSEを使用しないのですか?それは10年間にわたって組み込まれています。 – EJP
これは、JSSEが利用できない組み込みハードウェア上で動作します。 – Grodriguez