Comunicazione sicura tra client C # e server Java, utilizzando i certificati

3

Voglio garantire la comunicazione tra semplice client C # WPF e server Java. Ora ho già implementato la comunicazione raw socket e la mia sicurezza si basa su:

server invia la chiave pubblica RSA al client - >

< - il client restituisce crittografato con la chiave pubblica RSA, tasto AES per comunicazioni future.

ma non ho la certezza che qualcuno (gli uomini nel mezzo) prenderà e sostituirà la mia chiave pubblica. Suppongo che per evitare gli uomini nel mezzo ho bisogno di utilizzare i certificati CA. Qualcuno può aiutarmi, come fare una connessione SSL tra client Java e client C # utilizzando i certificati? E dove posso trovare alcuni certificati a scopo di test.

    
posta savionok 05.03.2012 - 12:34
fonte

2 risposte

5

Suggerisco di utilizzare una libreria SSL / TLS per C # ( SslStream ? OpenSSL ? chiedere su Stack Overflow se si desidera più raccomandazioni) o Java ( SslSocket ? BouncyCastle? chiedere su Stack Overflow se si desidera più raccomandazioni).

Puoi utilizzare TLS per crittografare l'intera comunicazione. Come dice @ordag, non provare a inventare qualcosa da solo. Questa è roba complicata. TLS è stato attentamente controllato e ci sono molte implementazioni esistenti, quindi sarà piuttosto facile da usare.

Come dice @symcbean, puoi facilmente creare i tuoi certificati autofirmati (ad es. con OpenSSL), che dovrebbe andare bene per i tuoi scopi.

Leggi anche le seguenti domande: Qual è la differenza tra SSL, TLS e HTTPS? , Il miglior strumento per testare una connessione SSL nella mia applicazione .

    
risposta data 05.03.2012 - 20:04
fonte
1

Ci sono molti modi per implementarlo, ma se fossi in me, userei stunnel ad entrambe le estremità per avvolgere il collegamento.

Generare un certificato autofirmato è relativamente semplice (IIRC openssl viene fornito con uno script che fa tutto per te - vedi man 8 make-ssl-cert).

    
risposta data 05.03.2012 - 13:36
fonte

Leggi altre domande sui tag