9

STARTTLS を発行する前にアプリが暗号化なしでサーバーと通信し、その後ソケットが暗号化されるようにアップグレードする必要があります。ポート (例: 5222) に接続し、STARTTLS を使用して Java を使用して TLS を要求できますか? もしそうなら、どの Socket オブジェクトを使用すればよいですか?

4

3 に答える 3

7

@Janの答えは役に立ちました(そして私はそれに投票しました)が、それを機能させるために少し調整する必要がありました:

SSLSocket sslSocket = (SSLSocket) ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(
                       socket, 
                       socket.getInetAddress().getHostAddress(), 
                       socket.getPort(), 
                       true);
InputStream inputStream = sslSocket.getInputStream();
OutputStream outputStream = sslSocket.getOutputStream();
// reads from the socket
Scanner scanner = new Scanner(inputStream);
// writes to the socket
OutputStream outputStream = new BufferedOutputStream(outputStream);

ポート 587 で Java 7 と GMail (smtp.gmail.com) を使用してテスト済み。

于 2013-01-18T16:46:33.760 に答える