Comunicación segura entre el cliente C # y el servidor Java, usando certificados

3

Quiero asegurar la comunicación entre el cliente simple de C # WPF y el servidor Java. Ahora ya he implementado la comunicación de sockets sin formato y mi seguridad se basa en:

el servidor envía la clave pública RSA al cliente - >

< - devolución del cliente cifrada con clave pública RSA, clave AES para futuras comunicaciones.

pero no estoy seguro de que alguien (los hombres del medio) capturará y reemplazará mi clave pública. Supongo que para evitar a los hombres en el medio necesito usar certificados de CA. ¿Alguien me puede ayudar, cómo hacer una conexión SSL entre el servidor Java y el cliente C # usando certificados? Y donde puedo encontrar algunos certificados para propósitos de prueba.

    
pregunta savionok 05.03.2012 - 12:34
fuente

2 respuestas

5

Le sugiero que use una biblioteca SSL / TLS para C # ( SslStream ? OpenSSL ? pregunta sobre Desbordamiento de pila si quieres más recomendaciones) o Java ( SslSocket ? BouncyCastle? pregunta sobre Desbordamiento de pila si quieres más recomendaciones).

Puede usar TLS para cifrar toda la comunicación. Como dice @ordag, no intentes inventar algo por tu cuenta. Esto es algo complicado. TLS ha sido revisado cuidadosamente, y hay muchas implementaciones existentes, por lo que será bastante fácil de usar.

Como dice @symcbean, puedes crear fácilmente tus propios certificados autofirmados (por ejemplo, con OpenSSL), que deberían estar bien para tus propósitos.

Lea también las siguientes preguntas: ¿Cuál es la diferencia entre SSL, TLS y HTTPS? , La mejor herramienta para probar una conexión SSL en mi aplicación .

    
respondido por el D.W. 05.03.2012 - 20:04
fuente
1

Hay muchas formas de implementar esto, pero si fuera yo, usaría stunnel en ambos extremos para envolver el conexión.

La generación de un certificado autofirmado es relativamente simple (IIRC openssl viene con un script que lo hace todo por usted: consulte man 8 make-ssl-cert).

    
respondido por el symcbean 05.03.2012 - 13:36
fuente

Lea otras preguntas en las etiquetas