2011-10-26 18 views
5

W mojej aplikacji mam sytuacje, w których muszę wysyłać żądania do serwerów z samopodpisanymi certyfikatami. Chciałbym móc wyłączyć sprawdzanie poprawności certyfikatu tylko dla tego konkretnego żądania.Wyłączanie sprawdzania poprawności certyfikatu dla pojedynczego żądania

Wiem, że mogę wyłączyć sprawdzanie poprawności certyfikatu, ustawiając ServicePointManager.ServerCertificateValidationCallback w celu wskazania metody wywołania zwrotnego i po prostu zwracam wartość true. Jednak to wyłącza sprawdzanie poprawności certyfikatu dla całej aplikacji, co mógłbym zrobić po prostu poprzez ustawienie app.config.

Jednak nie chcę wyłączać dla całej aplikacji, ale raczej wyłączyć dla pojedynczego żądania. Czy to jest możliwe?

Klasa pracuję z jest smtpclient

Odpowiedz

0

Wyłączenie sprawdzania poprawności certyfikatu jest ogólnie zły pomysł. Dlaczego po prostu nie dodasz własnego certyfikatu jako zaufanego certyfikatu do systemu lub do aplikacji.

AFAIR można to zrobić np. poprzez wdrożenie własnego X509CertificateValidator. Po prostu umieść niestandardowy certyfikat w swojej aplikacji i porównaj w X509CertificateValidator, jeśli oba są równe.

Zobacz także: How safe is my custom SSL verification logic to handle excepted RemoteCertificateNameMismatch?

+0

Robert thaks na odpowiedź. W części naszej aplikacji nie chcemy dopuścić, jeśli certyfikat jest nieważny. Jednak w tym konkretnym przypadku, w którym wysyłamy wiadomości e-mail, chcemy korzystać z protokołu SSL, ale często stwierdzamy, że wielu klientów ma podpisane przez siebie certyfikaty SSL, które skutkują niepowodzeniem wysłania wiadomości e-mail. Niestety często ma to miejsce w przypadku serwerów SMTP i koszmarem byłoby zaimportowanie certyfikatu dla każdego serwera SMTP, który się nie powiódł, dlatego chcemy umożliwić SMTP możliwość akceptowania błędów certyfikatów i innych części naszej aplikacji, aby nadal je egzekwować. –

+0

W takim razie powinieneś użyć schematu sprawdzania poprawności używanego również w systemie Android "K9" Mail-Client, który ma dokładnie ten sam problem. Gdy po raz pierwszy napotka niezaufany certyfikat, pokazuje pewne szczegóły certyfikatu, zapytaj użytkownika, czy on ufa temu certyfikatowi. Jeśli użytkownik odpowie "tak AFAIR", zapisuje skrót certyfikatu w pliku ustawień, oznaczając ten certyfikat jako prawidłowy. Wewnętrzny walidator certyfikatów akceptuje wszystkie zwykłe certyfikaty oraz certyfikat z zapisanym hashem. Działa dla wszystkich i jest względnie bezpieczny. – Robert

+0

Niestety jest to usługa, więc nie ma interfejsu użytkownika i dlatego nie ma żadnego okna dialogowego, które użytkownik może kliknąć, aby zaakceptować certyfikat. –

Powiązane problemy