Desidero che la mia app comunichi con il server senza crittografia prima di emettere un STARTTLS e quindi aggiornare il socket per essere crittografato. Posso collegarmi a una porta (ad esempio, 5222) e utilizzare STARTTLS per richiedere TLS utilizzando java? Se sì, quale oggetto Socket dovrei usare per quello?Aggiornare il socket Java a crittografato dopo l'avvio dei problemi
8
A
risposta
9
Certo che puoi. Usa il tuo SSLSocketFactory per creare un socket avvolgendo un java.net.Socket regolare esistente:
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(
socket,
socket.getInetAddress().getHostAddress(),
socket.getPort(),
true);
5
@ risposta di Jan era disponibile (e ho votato a favore), ma ho dovuto modificare un po 'per farlo funzionare per 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);
testato con Java 7 e GMail (smtp.gmail.com) sulla porta 587.
1
Ecco un possibile miglioramento: Se il codice è per il lato server invece che lato client, aggiungere questo, e funzionerà benissimo:
sslsocket.setUseClientMode(false);
sslsocket.startHandshake();
Problemi correlati
- 1. Java: timeout timeout socket socket
- 2. problemi dopo l'installazione di java 8
- 3. autenticazione socket.io dopo il socket stabilito
- 4. JavaScript crittografato?
- 5. Perl problemi di programmazione presa dopo scrittura continua a presa
- 6. Java TCP Socket Sniffing
- 7. problemi a giocare wav in Java
- 8. socket Java (server Android-Java)
- 9. Comando non crittografato per il kernel CUDA
- 10. Problemi con SO_BINDTODEVICE opzione socket Linux
- 11. "Impossibile aprire il socket"
- 12. Come scollegare il socket ZeroMQ dopo il timeout?
- 13. Socket Java: un server e più client
- 14. Modifica passwordFormat da crittografato a Hashed
- 15. Problemi con i metadati dei file con Java nio
- 16. Problemi nell'anteprima dei report
- 17. Problemi nell'utilizzo dei VBO per il rendering dei vertici - OpenGL
- 18. java socket writeUTF() e readUTF()
- 19. Risoluzione dei problemi ERROR_NOT_ENOUGH_MEMORY
- 20. Socket - Client Java, server C#
- 21. Socket Java: checksum TCP errato
- 22. Problemi dopo lo smaltimento DbContext
- 23. Socket Java HTTP/2 server
- 24. Java networking: evented Socket/InputStream
- 25. socket Java 7 e TLSv1.2
- 26. Come aggiornare/aggiornare l'elemento DOM dopo l'inserimento jQuery
- 27. Repository Subversion crittografato
- 28. Come interrompere una lettura su Java Socket?
- 29. close() socket direttamente dopo send(): non sicuro?
- 30. Come decodificare il file in Java crittografato con il comando openssl usando AES?