Potrzebuję dobrego sposobu na zaimplementowanie przypinania za pomocą certyfikatu lub klucza publicznego w uniwersalnej aplikacji systemu Windows 10. Cały kod jest w języku C#, a wszystkie połączenia to HTTPS, więc coś dla klasy Windows.Web.Http.HttpClient
byłoby świetne. Czy istnieje prosta klasa/biblioteka lub przynajmniej przewodnik krok po kroku, jak wdrożyć te rzeczy, które mogą być bezpiecznie wykonane przez kogoś, kto nie zna tajemnych szczegółów certyfikatów X.509 i tak dalej?Ściąganie certyfikatu w uniwersalnej aplikacji Windows 10
Niektóre rzeczy, o których mówiłem, mówią o używaniu kodu natywnego lub bibliotek innych firm, takich jak OpenSSL (bardzo skomplikowane!). Najlepszą rzeczą, jaką znalazłem jest this question o przypinaniu w WP8.0, która zawiera próbkę kodu, która powinna działać na WP8.1 i, miejmy nadzieję, także na Win10, ale jest trochę brzydka i myląca, i nie jestem pewna, jak wymagać że certyfikat serwera jest jednym z pinezek podczas wysyłania żądania z informacjami wrażliwymi na numer. Sprawdzanie wcześniej nie wydaje się bezpieczne z powodu ataków TOCTOU (czas czekania/czas użycia) (chyba że funkcja HttpRequestMessage
. TransportInformation
otwiera połączenie, a następnie je otwiera, więc nie ma szans, aby napastnik zyskał człowieka -na środkowej pozycji na nowym połączeniu). Idealnie byłoby znaleźć sposób na filtrowanie HttpClient, aby łączył się on tylko z serwerami z przypiętymi certyfikatami, ale najbliższa rzecz, jaką mogę znaleźć, działa dokładnie odwrotnie (zignoruj pewne błędy certyfikatów, o których mówiono o here) za pośrednictwem właściwości HttpBaseProtocolFilter.IgnorableServerCertificateErrors
, która wydaje się nie mieć żadnej możliwości ograniczenia ważnych certyfikatów.
Czy ktoś ma tutaj dobre rozwiązanie? Jeśli podejście HttpRequestMessage.TransportInformation
(z niestandardowym kodem weryfikacji certyfikatu) jest jedyną opcją, czy jest bezpieczne przed atakami TOCTOU, aby sprawdzić tę właściwość przed wysłaniem żądania?
Witam, mam takie same problemy jak ty, czy miałeś szczęście, jak to zrobić? – toroveneno