2013-01-24 16 views
9

Potrzebuję połączyć się z serwerem za pomocą tylko jednego szyfrowania - "ADH-RC4-MD5". Szukam ogólnego rozwiązania, które umożliwi mi sprawdzenie, jakiego szyfru używa serwer (jestem serwerem rezerwującym, który działa jako klient dla wielu innych serwerów aplikacji i wymaga połączenia i pobierania danych - za każdym razem może być innym serwerem).Używanie innego szyfrowania niż domyślny

Przepływ miałem do tej pory było:

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

trzymam na katastrofie w AuthenticateAsClient. Powodem jest to, że jedna AS działa tylko z wymienionym szyfrem.

Sprawdziłem, czy tak jest w przypadku SslScan tool.

Próbowałem wprowadzić ten szyfr za pomocą edytora zasad (gpedit.msc w linii poleceń) , ale znowu bez powodzenia.

Zasadniczo szukam sposobu na dynamiczne używanie tego kodu z kodu.

mam pracę kod Java:

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

Każdy pomysł C# odpowiednik?

+4

Sposób działa SSL jest to, że klient wysyła listę pakietów szyfrów obsługiwanych przez serwer. (Dokonuje się tego za pomocą metody "AuthenticateAsClient".) Serwer wybiera pakiet szyfrów, z którego chce korzystać. Jeśli lista nie zawiera pakietu algorytmów obsługiwanego przez serwer, połączenie SSL zostaje przerwane. – dtb

+0

dzięki za super szybką odpowiedź. ale co, jeśli wiem, że serwer ma tylko jeden szyfr, z którym działa, i ja, jako klient, muszę z nim pracować? – gilad

+1

Następnie należy znaleźć implementację klienta, która obsługuje również ten zestaw szyfrów. .NET SslStream nie może być rozszerzony o nowe zestawy szyfrów; Wierzę, że po prostu używa tego, co zapewnia Windows. – dtb

Odpowiedz

0

Spróbuj następujący:


0) Recheck co chipers są obsługiwane

1) Sprawdź na serwerze, jeśli po zainstalowaniu aktualizacji zabezpieczeń (trzeba go usunąć) http://support.microsoft.com/kb/2898850#AppliesToProducts

Jeśli użyjesz wygranej 8.1, zostanie wyłączona, nie wiesz o innych. Jeśli chcesz się dowiedzieć, dlaczego Microsoft zakazuje używania RC4, przeczytaj this.

2) nie jestem świadomy, że SslStream umożliwia określenie dozwolonych algorytmów szyfrowania (y), jednak można użyć:

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


Java "ADH-RC4-MD5" powinno być

Supported Protocol = tls (or ssl version 3) 
Cipher Algorithm Type = Rc4, 
Hash Algorithm Type = Md5 128 bit, 
Exchange Algorithm Type = DiffieHellman 
Powiązane problemy