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?
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
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
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