SSL
Publicado por Jaume (2 intervenciones) el 21/01/2009 00:42:54
Hola, soy inexperto en esto de la programación en java y tengo el siguiente problema:
Tengo que realizar un aplicación cliente-servidor eco con java. Pero tiene que ser una conexion SSL donde se deben autentificar tanto el servidor como el cliente. Mediante el keytool creo dos pares de keystores: 2 para el cliente (truststore con el certificado público del servidor y clientestore con la clave privada del cliente) y lo mismo para el servidor. Hasta aquí de momento bién.
Ahora a la hora de ejecutar los programas me sale esté error:
"Exception in thread "main" java.net.BindException: Permission denied"
A parte de este error me salen todo tipo de problemas, os paso el codigo del cliente y servidor y si me pudierais ayudar y decir-me lo que hago mal os lo agradeceria. La verdad es que soy muy novato en java y me entero de muy poco.
Aquí estan los códigos:
Servidor-------------------------------------------------------------------
Cliente-----------------------------------------------------------------------
---------------
Necesitaria si puede ser que me explicaseis los errores y la manera de solucionarlo y cualquier sugerencia de codigo para mejorar el programa. Muchas gracias de antemano!
Tengo que realizar un aplicación cliente-servidor eco con java. Pero tiene que ser una conexion SSL donde se deben autentificar tanto el servidor como el cliente. Mediante el keytool creo dos pares de keystores: 2 para el cliente (truststore con el certificado público del servidor y clientestore con la clave privada del cliente) y lo mismo para el servidor. Hasta aquí de momento bién.
Ahora a la hora de ejecutar los programas me sale esté error:
"Exception in thread "main" java.net.BindException: Permission denied"
A parte de este error me salen todo tipo de problemas, os paso el codigo del cliente y servidor y si me pudierais ayudar y decir-me lo que hago mal os lo agradeceria. La verdad es que soy muy novato en java y me entero de muy poco.
Aquí estan los códigos:
Servidor-------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
public class ServidorEco {
public static void main(String[] args) throws IOException {
System.setProperty("javax.net.ssl.keyStore","Servidor.keystore");
System.setProperty("javax.net.ssl.keyStorePassword","claveservidor");
SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
ServerSocket servidorSocket = ssf.createServerSocket(9999);
System.setProperty("javax.net.ssl.trustStore","trustServidor.keystore");
while (true) {
SSLSocket socket = (SSLSocket) servidorSocket.accept();
try {
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte[] bytes = new byte[512];
int leidos;
while ((leidos = is.read(bytes)) != -1) {
os.write(bytes, 0, llegits);
}
is.close();
os.close();
socket.close();
} catch (IOException e) {
System.out.println("Error de conexión.");
}
}
}
}
Cliente-----------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
public class ClienteEco {
public static void main(String[] args) throws IOException {
BufferedReader teclado =
new BufferedReader(new InputStreamReader(System.in));
System.setProperty("javax.net.ssl.keyStore","Client.keystore");
System.setProperty("javax.net.ssl.keyStorePassword","clavecliente");
System.setProperty("javax.net.ssl.trustStore","trustClient.keystore");
SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket clientesocket = (SSLSocket) ssf.createSocket("127.0.0.1", 9999);
BufferedReader leerServidor =
new BufferedReader(new InputStreamReader(clientsocket.getInputStream()));
PrintWriter escribirServidor =
new PrintWriter(clientesocket.getOutputStream(),true);
for(int i=0; i<3; i++){
String linea = teclado.readLine();
escribirServidor.println(linea);
String linearecibida = llegirServidor.readLine();
System.out.println("Eco: "+linearecibida);
}
lleerServidor.close();
escribirServidor.close();
clientesocket.close();
}
}
---------------
Necesitaria si puede ser que me explicaseis los errores y la manera de solucionarlo y cualquier sugerencia de codigo para mejorar el programa. Muchas gracias de antemano!
Valora esta pregunta


0