Quiero que mi aplicación hable con el servidor sin cifrado antes de emitir un STARTTLS y luego actualizar el socket para que se encripte después de eso. ¿Puedo conectarme a un puerto (por ej., 5222) y usar STARTTLS para solicitar TLS usando Java? Si es así, ¿qué objeto Socket debería usar para eso?Actualizar el socket de Java a encriptado después de la edición starttls
8
A
Respuesta
9
Seguro que puedes. Utilice su SSLSocketFactory para crear una toma envolviendo un java.net.Socket ordinario existente:
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(
socket,
socket.getInetAddress().getHostAddress(),
socket.getPort(),
true);
5
@ respuesta de Jan era muy útil (y votado por él), pero tenía que ajustar un poco para conseguir que funcione para me:
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);
probado con Java 7 y Gmail (smtp.gmail.com) en el puerto 587.
1
He aquí una posible mejora: Si el código es para el lado del servidor en lugar del lado del cliente, añadir esto, y funcionará bien:
sslsocket.setUseClientMode(false);
sslsocket.startHandshake();
Cuestiones relacionadas
- 1. edición extraña después de actualizar a iOS 4.1 SDK
- 2. DevServer falla después de actualizar a java 6u31
- 3. actualización de DataGrid después de la edición de celda
- 4. ¿Cómo evitar crear una nueva conexión de socket en socket.io después de actualizar la página html?
- 5. ClassNotFoundException después de actualizar a ADT 18
- 6. Java zócalo y ServerSocket Edición
- 7. JQGrid: ¿Cómo puedo actualizar un menú desplegable después de la edición?
- 8. error, CoffeeScript.tmLangauge, después de actualizar a 2.0.1
- 9. Ver no actualizar después de la publicación
- 10. Seleccione la fila después de actualizar DBGrid
- 11. Bloques de socket Java en la conexión a un servidor
- 12. ¿Buena introducción a la programación de socket TCP en Java?
- 13. El socket permanece abierto después de cerrar el programa (C++)
- 14. STARTTLS vs SSL/TLS
- 15. Extensión STARTTLS no admitida por el servidor
- 16. ¿Cómo obligo a DOM a actualizar/actualizar justo antes y después de una consulta de AJAX?
- 17. ¿El socket Java no arroja excepciones en un socket muerto?
- 18. Detectando la edición de JComboBox
- 19. Reheapify java.util.PriorityQueue después de actualizar los elementos
- 20. SGEN no funciona después de actualizar de VS2008 a VS2010
- 21. Propiedades smtp de JavaMail (para STARTTLS)
- 22. EF 4.1 Código Primera Edición después de actualización
- 23. ¿Cuándo estará disponible la 4ª edición de Java Language Specification?
- 24. NSStream SSL en el socket usado
- 25. Java TCP Socket Sniffing
- 26. Actualizar el compilador de Eclipse Java
- 27. Versión desajuste en xcactivitylog después de actualizar a XCode 4.2
- 28. El socket de escucha UDP deja de escuchar después de cambios en la configuración de red
- 29. Html.AntiForgeryToken() causa errores después de actualizar a .NET 3.5 SP1
- 30. GetVirtualPath fallar después de actualizar a .NET 4