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