2010-05-28 9 views
7

Jak określić zestaw szyfrów do użycia w połączeniach SSL?Jak określić szyfr dla połączenia SSL w .NET?

Wiem, że Mentalis Seclib otrzymałem tę funkcję, jednak nie utrzymują projektu (i są problemy w tej bibliotece z systemami x64), ponieważ mówią, że .NET Framework 2.0 wprowadził te funkcje, jednak nie mogłem znaleźć sposobu Aby to zrobić w .NET Framework 3.5.

Aby być bardziej konkretny Chcę połączyć usługę HTTPS za pomocą szyfru NULL, zrobiłbym to samo z OpenSSL za pomocą następującego polecenia:

openssl s_client -connect www.example.com:443 -cipher NULL 

Jak mogę to zrobić w .NET?

Dostępne są również komercyjne lub komercyjne przyjazne licencyjne propozycje bibliotek.

Odpowiedz

6

(Moje poprzednie odpowiedź została źle poinformowana, że ​​nie zauważyłem na początku, że nieruchomość miałem na myśli był tylko do odczytu).

W .NET 4, klasa System.Net.Security.SslStream obsługuje nowy konstruktor, pozwalając możesz podać wartość EncryptionPolicy, która może być NoEncryption. Pozwala to na brak szyfrowania i żądanie użycia szyfru NULL, jeśli drugi punkt końcowy może obsługiwać szyfr NULL.

Niestety to nie istniało nawet w wersji 3.5.


Niezupełnie część pytania, ale zakładam, że (i to jest naprawdę dla przyszłych czytelników), które są oczywiście świadomi istotnych ryzyk, z użyciem protokołu SSL z szyfrem NULL? A także korzyści, które tracisz?

0

Na podstawie dokumentacji, można ustawić przy użyciu szyfrów SChannel poprzez palgSupportedAlgs, dwMinimumCipherStrength i dwMaximumCipherStrength parametrów struktury SCHANNEL_CRED.

Aby włączyć algorytm szyfrowania NULL, należy ustawić wartość dwMinimumCipherStrength na -1.

PRZECINANIE: Jest to oparte wyłącznie na dokumentacji. Nie jestem programistą .NET, ale szukałem odpowiedzi na to pytanie, ponieważ obsługuję usługę z klientami .NET.

+0

Masz pomysł, jak wykorzystać SCHANNEL w .NET lub jakiejkolwiek obudowie .NET? –

+0

Dla .NET 3.5, nie mam. .NET 4 wprowadził wyliczenie EncryptionPolicy, które pozwala skonfigurować HttpWebRequest, aby zezwolić lub wymagać użycia NULL szyfru dla połączeń HTTPS. Wysłałem te informacje do mojego klienta .NET i on potwierdził, że to działa. Jeśli ci się przydaje, mogę napisać, jak go używać. – Matthieu

+0

Brzmi interesująco, czy chciałbyś wskazać mi artykuł lub wyrzucić mi fragment kodu? –

0

W .NET można użyć klasy SSLStream. w .NET 4.0, jak mówi Matthieu powyżej, pozwala ci to określić szyfry.

Powiązane problemy