Jak obsługiwać certyfikat SSL w Selenium

⚡ Inteligentne podsumowanie

Błędy certyfikatu SSL zatrzymują Selenium test w momencie, gdy przeglądarka odrzuci niezaufany lub wygasły certyfikat, więc każdy skrypt WebDriver musi mieć funkcję specyficzną dla przeglądarki, która akceptuje certyfikat i pozwala na kontynuację automatyzacji.

  • 🔘 Definicja: Protokół SSL szyfruje ruch pomiędzy przeglądarką i serwerem, a certyfikat potwierdza tożsamość serwera.
  • Wyzwalacz błędu: Przeglądarki blokują certyfikaty niezaufane, wygasłe, odwołane lub podpisane samodzielnie i wyświetlają stronę ostrzegawczą.
  • Firefox: A Firefox profil ustawia setAcceptUntrustedCertificates i setAssumeUntrustedCertificateIssuer przed uruchomieniem sterownika.
  • 🧪 Chrom: DesiredCapabilities z ACCEPT_SSL_CERTS akceptuje certyfikat na Selenium 2 i Selenium 3.
  • 🛠️. Internet Explorer: A JavaKliknięcie skryptu na element overridelink pomija stronę ostrzegawczą.
  • ⚠️ Selenium 4: setAcceptInsecureCerts w ChromeOptions, FirefoxOptions lub EdgeOptions zastępuje DesiredCapabilities.

Jak obsługiwać certyfikat SSL w Selenium

Certyfikat SSL w Selenium

SSL (Secure Sockets Layer) to standardowy protokół bezpieczeństwa służący do ustanawiania bezpiecznego połączenia pomiędzy serwerem a klientem, którym jest przeglądarka.

Certyfikat SSL chroni dane przesyłane między serwerem a aplikacją kliencką za pomocą silnego szyfrowania i podpisu cyfrowego. Właściciel witryny instaluje certyfikat SSL lub certyfikat podpisywania kodu.

Korzyści z certyfikatu SSL

Korzystanie z certyfikatu SSL ma wiele zalet, takich jak:

  • Można zwiększyć zaufanie użytkowników i klientów, aby przyspieszyć rozwój firmy
  • Certyfikaty te pomagają zabezpieczyć transakcje online i poufne informacje klientów, takie jak dane kart kredytowych/debetowych itp.
  • Certyfikat podpisywania zwykle uzyskuje maksymalną liczbę pobrań i dobre recenzje od użytkowników.

Strony internetowe zabezpieczone protokołem SSL zaczynają się od https:// i możesz zobaczyć ikonę kłódki lub zielony pasek adresu, jeśli połączenie jest bezpiecznie nawiązane.

Na przykład, jeśli chcesz wykonać jakąś transakcję za pośrednictwem bankowości internetowej lub chcesz kupić Mobile telefon za pośrednictwem witryny handlu elektronicznego, takiej jak Flipkart lub Amazon.

Co dzieje się pomiędzy przeglądarką internetową a serwerem

  1. Przeglądarka próbuje połączyć się ze stroną internetową zabezpieczoną protokołem SSL. Przeglądarka żąda od serwera WWW identyfikacji
  2. Serwer wysyła do przeglądarki kopię swojego certyfikatu SSL
  3. Przeglądarka sprawdza, czy certyfikat SSL jest autentyczny. Jeśli tak, wysyła wiadomość do serwera
  4. Serwer odsyła cyfrowo podpisane potwierdzenie rozpoczęcia sesji szyfrowanej SSL
  5. Zaszyfrowane dane są udostępniane pomiędzy serwerem a przeglądarką

Numery kart i dane logowania są przesyłane w trakcie sesji, dlatego wymiana danych musi pozostać szyfrowana od początku do końca i nie może zostać przechwycona.

Na przykład kłódka i pasek adresu poniżej potwierdzają, że certyfikat został zaakceptowany.

  1. Typ https://netbanking.hdfcbank.com/netbanking/ .
  2. Naciśnij Enter.
  3. W przeglądarce zobaczysz zielony pasek adresu, jak poniżej:-

Zielony pasek adresu w przeglądarce dla strony bankowości internetowej HDFC zabezpieczonej protokołem SSL

W jaki sposób certyfikat SSL tworzy bezpieczne połączenie

Poniższy diagram tracOto uścisk dłoni, a ponumerowane kroki objaśniają każdą wymianę zdań.

Schemat uzgadniania protokołu SSL między przeglądarką internetową a serwerem internetowym

  1. Przeglądarka wysyła żądanie HTTPS do serwera.
  2. Teraz serwer musi zapewnić przeglądarce pewną identyfikację, aby udowodnić, że jest zaufany. Można tego dokonać przesyłając do przeglądarki kopię swojego certyfikatu SSL.
  3. Każda przeglądarka ma własną listę Zaufanych urzędów certyfikacji. Przeglądarka sprawdza, czy katalog główny certyfikatu jest zgodny z listą zaufanych urzędów certyfikacji oraz czy certyfikat nie wygasł, nie został odwołany oraz czy nazwa zwyczajowa jest prawidłowa dla witryny internetowej, z którą się łączy.
  4. Jeśli przeglądarka ufa certyfikatowi, pomiędzy serwerem a przeglądarką tworzona jest zaszyfrowana sesja.
  5. Serwer i przeglądarka mogą wysyłać zaszyfrowane wiadomości

Rodzaje certyfikatów SSL

Przeglądarka i serwer wykorzystują mechanizm certyfikatu SSL, aby móc nawiązać bezpieczne połączenie. Połączenie to polega na weryfikacji trzech rodzajów certyfikatów.

  • Korzeń
  • Średniozaawansowany
  • Certyfikat serwera

Proces uzyskania Certyfikatu SSL

Proces uzyskiwania certyfikatu SSL obejmuje poniższe kroki: -

  1. Najpierw musisz utworzyć żądanie CSR (utwórz żądanie podpisania certyfikatu).
  2. Żądanie CSR tworzy plik danych CSR, który jest wysyłany do wystawcy certyfikatu SSL znanego jako CA (Certificate Authority).
  3. Urząd certyfikacji używa plików danych CSR do utworzenia certyfikatu SSL dla Twojego serwera.
  4. Po otrzymaniu certyfikatu SSL należy go zainstalować na swoim serwerze.
  5. Konieczne jest również zainstalowanie certyfikatu pośredniego, który łączy Twój certyfikat SSL z certyfikatem głównym urzędu certyfikacji.

Poniższy obraz przedstawia wszystkie trzy certyfikaty- Certyfikat główny, pośredni i serwerowy.

Łańcuch certyfikatów pokazujący certyfikaty SSL główne, pośrednie i serwerowe

Jak weryfikowane są certyfikaty SSL

SSL działa poprzez kombinację programów i procedur szyfrowania/deszyfrowania, które istnieją na komputerze serwera WWW i przeglądarce serwera WWW.

Certyfikat SSL zasadniczo zawiera poniższe informacje.

  1. Podmiot będący tożsamością właściciela serwisu.
  2. Informacje o ważności – klucz publiczny i prywatny.

Klucz prywatny i klucz publiczny to dwa unikalnie powiązane klucze kryptograficzne (liczby). Wszystko, co jest zaszyfrowane kluczem publicznym, może zostać odszyfrowane tylko kluczem prywatnym. Przeglądarka wyświetla te pola podczas sprawdzania certyfikatu, jak poniżej.

Panel szczegółów certyfikatu zawierający informacje o przedmiocie, okresie ważności i kluczu publicznym

Jeśli nie zostanie nawiązane bezpieczne połączenie pomiędzy serwerem a klientem ze względu na certyfikat, pojawi się błąd certyfikatu SSL.

Rodzaje błędów certyfikatu SSL

Załóżmy, że wpisujesz żądanie https, a przeglądarka odpowiada komunikatem „To połączenie jest niezaufane” lub „Certyfikat bezpieczeństwa witryny nie jest zaufany”. Przeglądarka nie mogła nawiązać bezpiecznego połączenia z przedstawionym certyfikatem, więc zatrzymuje się i prosi użytkownika o podjęcie odpowiednich działań.

Rodzaje błędów, które prawdopodobnie zobaczysz z powodu certyfikatu w różnych przeglądarkach, mogą być mniej więcej podobne

  1. naturaFox - To połączenie jest niezaufane
  2. Google Chrome – Bezpieczeństwo tej witryny nie jest godne zaufania
  3. Internet Explorer (IE) – Ten certyfikat bezpieczeństwa prezentowany przez tę witrynę nie był zaufany przez zaufany urząd certyfikacji (CA)

Zrzut ekranu poniżej przedstawia komunikat generowany przez niezaufany certyfikat.

Przeglądarka wyświetla stronę z ostrzeżeniem o niezabezpieczonym połączeniu w przypadku nieprawidłowego certyfikatu SSL

Jak radzić sobie z błędem certyfikatu SSL za pomocą Selenium Sterownik internetowy

Załóżmy, że skrypt testowy trafia na stronę „Niezaufane połączenie” powyżej. Skrypt należy dostosować tak, aby obsługiwał wyjątek SSL samodzielnie, wyłącznie poprzez automatyzacja.

Zmiana zależy od używanej instancji przeglądarki i to właśnie tutaj pojawiają się pożądane możliwości. Opcja Pożądane możliwości konfiguruje instancję sterownika Selenium Webdriver, w tym ChromeDriver, FirefoxSterownik i Internet Explorer.

Poniższe kroki można dodać do Selenium skrypt do usuwania komunikatu „Niezaufane połączenie” dla każdej przeglądarki.

⚠️ Selenium Uwaga 4: Klasa DesiredCapabilities została usunięta w Selenium 4. Klasy opcji przeglądarki teraz przenoszą to samo ustawienie za pośrednictwem jednej funkcji W3C, zaakceptujNiezabezpieczoneCerty.

Przeglądarka Selenium Klasa 4 Numer Telefonu
Chrom Opcje Chrome setAcceptInsecureCerts(true)
Firefox FirefoxOpcje setAcceptInsecureCerts(true)
krawędź Opcje krawędzi setAcceptInsecureCerts(true)
Safari JavascriptWykonawca tymczasowy skrypt obejścia
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Błąd obsługi certyfikatu SSL Firefox

Do obsługi błędu certyfikatu SSL w Firefox, musimy wykorzystać pożądane możliwości Selenium Webdriver i wykonaj następujące kroki.

Krok 1) Najpierw musimy stworzyć nowy Firefox profil mowić "mój profil".

Krok 2) Teraz uzyskaj dostęp do myProfile w skrypcie jak poniżej i utwórz plik FirefoxObiekt profilu.

ProfilesIni prof = new ProfilesIni()				
FirefoxProfile ffProfile= prof.getProfile ("myProfile")

Krok 3) Teraz musimy ustawić właściwości „setAcceptUntrustedCertificates” i „setAssumeUntrustedCertificateIssuer” w programie Fire Fox profil.

ffProfile.setAcceptUntrustedCertificates(true) 
ffProfile.setAssumeUntrustedCertificateIssuer(false)

Krok 4) Teraz użyj ogniaFox profil w OgniuFox obiekt kierowcy.

WebDriver driver = new FirefoxDriver (ffProfile)

Uwaga: "setAcceptUntrustedCertificates" oraz "setAssumeUntrustedCertificateIssuer„to możliwości radzenia sobie z błędami certyfikatów w przeglądarkach internetowych.

⚠️ Uwaga dotycząca wersji: powyższy kod oparty na profilu ma na celu Selenium 2 i Selenium 3. Na Selenium 4 profil jest przymocowany przez FirefoxOpcje i Firefox domyślnie akceptuje niezabezpieczone certyfikaty.

Obsługa błędów certyfikatu SSL w przeglądarce Chrome

W celu obsługi błędów SSL w przeglądarce Chrome poniższy obiekt DesiredCapabilities akceptuje wszystkie certyfikaty SSL, więc podczas wykonywania skryptu użytkownik nie zobaczy żadnego ostrzeżenia o certyfikacie.

Musimy utworzyć instancję klasy DesiredCapabilities jak poniżej: -

DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome ()       
handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true)
WebDriver driver = new ChromeDriver (handlSSLErr);

⚠️ Uwaga dotycząca wersji: CapabilityType.ACCEPT_SSL_CERTS należy do starego protokołu JSON Wire Protocol. Zastąp go fragmentem kodu ChromeOptions pokazanym wcześniej podczas uruchamiania. Selenium 4.

Obsługa błędów certyfikatu SSL w IE

W przeciwieństwie do obsługi certyfikatów SSL w przeglądarce Chrome i Firefoxw IE może być konieczne obsłużenie tego za pomocą javascript.

Aby obsłużyć certyfikat SSL w przeglądarce IE, możesz poradzić sobie na dwa sposoby.

Metoda 1) Kliknij link „Kontynuuj przeglądanie tej witryny (niezalecane)” w okienku interstitial. Ten link ma identyfikator „overridelink”, który możesz sprawdzić w panelu HTML otwartym klawiszem F12, jak pokazano na poniższym zrzucie ekranu.

Ostrzeżenie dotyczące certyfikatu programu Internet Explorer z linkiem „Przejdź do tej witryny”

Kliknij łącze, korzystając z metody Driver.navigate() za pomocą JavaSkrypt poniżej:

driver.navigate ().to ("javascript:document.getElementById('overridelink').click()");

Metoda 2) Druga metoda jest bardzo podobna do kodu obsługi protokołu SSL w przeglądarce Chrome.

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
System.setProperty("webdriver.ie.driver","IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver(capabilities);

Powyższy kod pomoże obsłużyć błąd certyfikatu SSL w IE.

⚠️ Uwaga dotycząca wersji: Internet Explorer 11 został wycofany w czerwcu 2022 r. Uruchom ten sam scenariusz w Microsoft Edge z EdgeOptions lub steruj przeglądarką Edge w trybie IE, jeśli starsza aplikacja nadal tego wymaga.

FAQ

Projekt Chromium działa badssl.com, który obsługuje wygasłe, samopodpisane, unieważnione i niepoprawnie hostowane subdomeny. Skieruj skrypt testowy na expired.badssl.com, aby bezpiecznie odtworzyć awarię certyfikatu.

Nie. Selenium 4 usunięto to na rzecz klas opcji przeglądarki. Zbuduj ChromeOptions, FirefoxObiekt Options lub EdgeOptions wywołuje metodę setAcceptInsecureCerts(true) i przekazuje ją do konstruktora sterownika.

Utwórz obiekt EdgeOptions, wywołaj setAcceptInsecureCerts(true) i przekaż go do konstruktora EdgeDriver. Wzorzec pasuje do Chrome, ponieważ obie przeglądarki korzystają z tego samego silnika Chromium.

SafariDriver nie ma przełącznika „akceptuj niezabezpieczone certyfikaty”. Użyj JavascriptWykonawca uruchamia CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), który czyści okienko tylko dla danej sesji.

ERR_CERT_DATE_INVALID oznacza wygasły certyfikat, ERR_CERT_REVOKED certyfikat unieważniony, a ERR_CERT_AUTHORITY_INVALID certyfikat podpisany samodzielnie lub niezaufanego wystawcę. Kody wskazują przyczynę błędu przed zmianą skryptu.

Uczenie maszynowe grupuje błędy certyfikatów według kodu błędu i hosta, oddzielając wygasły certyfikat przejściowy od rzeczywistego błędu. Takie grupowanie zapobiega rejestrowaniu jednego problemu w środowisku jako wielu niezwiązanych ze sobą błędów testowych.

Tak. Drugi pilot GitHub tworzy obiekt Options i konstruktor sterownika z komentarza, ale sprawdza, czy sugeruje setAcceptInsecureCerts, a nie usunięte wywołanie DesiredCapabilities.

Tylko w środowiskach testowych. Akceptowanie wszystkich certyfikatów ukrywa błędy wygaśnięcia, nazwy hosta i łańcucha, dlatego należy unikać używania tej flagi podczas testów dymowych w środowisku produkcyjnym i jawnie potwierdzać certyfikat podczas testów bezpieczeństwa.

Podsumuj ten post następująco: