2013-01-24 14 views
9

È necessario connettersi a un server utilizzando un solo codice - "ADH-RC4-MD5". Sto cercando una soluzione generica che mi consenta di verificare quale cifratura sta utilizzando il server (sono un server di provisioning che funge da client per molti altri server delle applicazioni e deve connettersi e ottenere dati - ogni volta che può essere un server diverso).Utilizzo di codice diverso da predefinito

Il flusso che ho avuto finora è stato:

TcpClient tcpClient = new TcpClient(serverName, port); 
SslStream sslStream = new SslStream(tcpClient.GetStream(), false, null, null,    EncryptionPolicy.RequireEncryption); 
sslStream.AuthenticateAsClient(HostName); 

io continuo a caduta nel AuthenticateAsClient. Il motivo è che uno AS sta lavorando solo con la cifra citata.

Ho verificato che questo è il caso con il SslScan tool.

Ho provato ad inserire questo codice tramite l'editor dei criteri (gpedit.msc nella riga di comando) ma ancora senza fortuna.

Fondamentalmente sto cercando un modo per utilizzare dinamicamente questo codice dal codice.

ho un codice Java di lavoro:

sslsocket.setNeedClientAuth(true); 
String[] list = new String[1]; 
list[0] = "ADH-RC4-MD5"; 
sslsocket.setEnabledCipherSuites(list); 

Qualsiasi idea di C# equivalente?

+4

Il modo in cui SSL funziona è che il il client invia una lista di pacchetti di crittografia che supporta al server. (Questo viene fatto dal metodo 'AuthenticateAsClient'.) Il server sceglie la suite di crittografia che vuole usare. Se l'elenco non contiene una suite di crittografia supportata dal server, la connessione SSL viene interrotta. – dtb

+0

grazie per la risposta super veloce. ma cosa succede se so che il server ha un solo cifrario con cui funziona, e io, come cliente, ho bisogno di lavorare con esso? – gilad

+1

Quindi è necessario trovare un'implementazione client che supporti anche questa suite di crittografia. .NET SslStream non può essere esteso con nuove suite di crittografia; Credo che usi solo ciò che Windows fornisce. – dtb

risposta

0

Prova seguente:


0) Recheck quello chipers sono supportati

1) Verificare nel vostro server se avete seguito l'aggiornamento della protezione installato (è necessario rimuoverlo) http://support.microsoft.com/kb/2898850#AppliesToProducts

Se si utilizza la versione 8.1, verrà disabilitato, non è sicuro degli altri. Se vuoi sapere perché Microsoft ti incoraggia a disabilitare RC4 leggi this.

2) Io non sono consapevoli del fatto che SslStream permette di specificare ciphersuite ammesso (s), tuttavia è possibile utilizzare:

http://www.example-code.com/csharp/dh_key_exchange.asp


Java "ADH-RC4-MD5" dovrebbe essere

Supported Protocol = tls (or ssl version 3) 
Cipher Algorithm Type = Rc4, 
Hash Algorithm Type = Md5 128 bit, 
Exchange Algorithm Type = DiffieHellman 
Problemi correlati