Как да боравим със SSL сертификат в Selenium

⚡ Умно обобщение

Грешките в SSL сертификата спират Selenium тестват в момента, в който браузърът откаже ненадежден или изтекъл сертификат, така че всеки WebDriver скрипт се нуждае от специфична за браузъра функция, която приема сертификата и позволява на автоматизацията да продължи.

  • 🔘 Определение: SSL криптира трафика между браузъра и сървъра, а сертификатът доказва самоличността на сървъра.
  • ☑️ Задействане на грешка: Браузърите блокират ненадеждни, изтекли, анулирани или самоподписани сертификати и показват предупредителна страница.
  • Firefox: A Firefox Профилът задава setAcceptUntrustedCertificates и setAssumeUntrustedCertificateIssuer преди стартирането на драйвера.
  • 🧪 Chrome: DesiredCapabilities с ACCEPT_SSL_CERTS приема сертификата на Selenium 2 и Selenium 3.
  • 🛠️ Internet Explorer: A JavaКликването на скрипта върху елемента overridelink пропуска страницата с предупреждението.
  • ⚠️ Selenium 4: setAcceptInsecureCerts в ChromeOptions, FirefoxOptions или EdgeOptions замества DesiredCapabilities.

Как да боравим със SSL сертификат в Selenium

SSL сертификат в Selenium

SSL (Secure Sockets Layer) е стандартен протокол за сигурност за установяване на защитена връзка между сървъра и клиента, който е браузър.

SSL сертификатът защитава данните, прехвърляни между сървъра и клиентското приложение, със силно криптиране и цифров подпис. Собственикът на сайта инсталира или SSL сертификат, или сертификат за подписване на код.

Предимства на SSL сертификата

Има редица предимства от използването на SSL сертификат като,

  • Човек може да увеличи доверието на своите потребители и клиенти, за да подобри бързото развитие на бизнеса
  • Тези сертификати помагат за защита на онлайн транзакции и чувствителна информация на клиентите, като данни за кредитни/дебитни карти и др.
  • Сертификатът за подписване има тенденция да получава максимален брой изтегляния и добри отзиви от потребителите.

Защитените с SSL уебсайтове започват с https:// и можете да видите икона за заключване или зелена адресна лента, ако връзката е сигурно установена.

Например, ако искате да извършите транзакция чрез нетно банкиране или искате да закупите a подвижен телефон чрез сайт за електронна търговия като Flipkart или Amazon.

Какво се случва между уеб браузъра и сървъра

  1. Браузър се опитва да се свърже с уебсайт, защитен с SSL. Браузърът изисква от уеб сървъра да се идентифицира
  2. Сървърът изпраща на браузъра копие на своя SSL сертификат
  3. Браузърът проверява дали SSL сертификатът е истински. Ако е така, той изпраща съобщение до сървъра
  4. Сървърът изпраща обратно цифрово подписано потвърждение за стартиране на SSL криптирана сесия
  5. Шифрованите данни се споделят между сървъра и браузъра

Номерата на картите и данните за вход се предават през тази сесия, така че обменът трябва да остане криптиран от край до край и не може да бъде прихванат.

Например, катинарът и адресната лента отдолу потвърждават, че сертификатът е приет.

  1. Тип https://netbanking.hdfcbank.com/netbanking/ .
  2. Хит Enter.
  3. Ще видите зелена адресна лента в браузъра, както е показано по-долу: -

Зелена адресна лента в браузъра за страница за нетно банкиране на HDFC, защитена с SSL

Как SSL сертификатът създава защитена връзка

Диаграмата по-долу tracръкостискането, а номерираните стъпки, които следват, обясняват всяка размяна.

Диаграма на SSL ръкостискането между уеб браузър и уеб сървър

  1. Browser изпраща HTTPS заявка към сървъра.
  2. Сега сървърът трябва да предостави някаква идентификация на браузъра, за да докаже, че му се вярва. Това може да стане чрез изпращане на копие от неговия SSL сертификат до браузъра.
  3. Всеки браузър има свой собствен списък с доверени CA. Браузърът проверява корена на сертификата спрямо своя списък с доверени CA и дали сертификатът е неизтекъл, неотменен и че общото име е валидно за уебсайта, към който се свързва.
  4. Ако браузърът вярва на сертификата, се създава криптирана сесия между сървъра и браузъра.
  5. Сървърът и браузърът могат да изпращат криптирани съобщения

Видове SSL сертификати

Браузърът и сървърът използват механизма на SSL сертификат, за да могат да установят защитена връзка. Тази връзка включва проверка на три вида сертификати.

  • Корен
  • Междинен
  • Сертификат за сървър

Процес на получаване на SSL сертификат

Процесът на получаване на SSL сертификат включва следните стъпки: -

  1. Първо, трябва да създадете CSR (създаване на заявка за подписване на сертификат).
  2. CSR заявката създава CSR файл с данни, който се изпраща до издателя на SSL сертификат, известен като CA (Certificate Authority).
  3. CA използва CSR файловете с данни, за да създаде SSL сертификат за вашия сървър.
  4. След като получите SSL сертификата, трябва да го инсталирате на вашия сървър.
  5. Необходим е и междинен сертификат за инсталиране, който свързва вашия SSL сертификат с основния сертификат на CA.

Изображението по-долу представлява и трите сертификата- Основен, междинен и сървърен сертификат.

Верига от сертификати, показваща коренния, междинния и сървърния SSL сертификат

Как се проверяват SSL сертификатите

SSL работи чрез комбинация от програми и рутина за криптиране/декриптиране, които съществуват на компютъра на уеб сървъра и браузъра на уеб сървъра.

SSL сертификатът основно съдържа информация по-долу.

  1. Субект, който е самоличността на собственика на уебсайта.
  2. Информация за валидност - публичен и частен ключ.

Частният и публичният ключ са два уникално свързани криптографски ключа (числа). Всичко, което е криптирано с публичен ключ, може да бъде декриптирано само с частен ключ. Браузърът показва тези полета, когато сертификатът се проверява, както е показано по-долу.

Панел с подробности за сертификата, в който са изброени темата, срокът на валидност и публичният ключ

Когато не е установена защитена връзка между сървъра и клиента поради сертификата, ще се появи следната грешка в SSL сертификата.

Видове грешки на SSL сертификат

Да предположим, че въвеждате https заявка и браузърът отговаря с „Тази връзка е ненадеждна“ или „Сертификатът за сигурност на сайта не е надежден“. Браузърът не е успял да установи защитена връзка с представения сертификат, затова спира и моли потребителя да предприеме съответните действия.

Видовете грешки, които вероятно ще видите поради сертификат в различни браузъри, може да са донякъде подобни

  1. ОгънFox – Тази връзка е ненадеждна
  2. Google Chrome – Сигурността на този сайт не е надеждна
  3. Internet Explorer (IE) – Този сертификат за сигурност, представен от този уебсайт, не е доверен от доверен сертифициращ орган (CA)

Екранната снимка по-долу показва заставката, която се генерира от ненадежден сертификат.

Страница с предупреждение за ненадеждна връзка, показана от браузъра, поради невалиден SSL сертификат

Как да се справим с грешката на SSL сертификата при използване Selenium Уебдрайвер

Да предположим, че тестов скрипт попада на страницата „Ненадеждна връзка“ по-горе. Скриптът трябва да бъде коригиран така, че сам да се грижи за SSL изключението, единствено чрез автоматизация.

Промяната зависи от използвания екземпляр на браузъра и тук се намесват желаните възможности. „Желани възможности“ конфигурира екземпляра на драйвера на Selenium Уебдрайвер, включително ChromeDriver, FirefoxДрайвер и Internet Explorer.

Стъпките по-долу могат да бъдат добавени към Selenium скрипт за изчистване на ситуацията „Ненадеждна връзка“ за всеки браузър.

⚠️ Selenium Бележка от 4 г.: Класът DesiredCapabilities беше премахнат в Selenium 4. Класовете „Опции на браузъра“ вече носят една и съща настройка чрез една единствена W3C функционалност, приемане на несигурни сертификати.

Browser Selenium 4 клас ПОЗВЪНЯВАНЕ
Chrome Опции на Chrome setAcceptInsecureCerts(true)
Firefox FirefoxНастроики setAcceptInsecureCerts(true)
Ръб Опции за ръбове setAcceptInsecureCerts(true)
сафари Javascriptизпълнител скрипт за временно заобикаляне
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Обработка на грешки в SSL сертификата Firefox

За обработка на грешка в SSL сертификата в Firefox, трябва да използваме желаните възможности на Selenium Webdriver и следвайте следните стъпки.

Стъпка 1) Първо трябва да създадем нов Firefox профил казвам "моят профил".

Стъпка 2) Сега отворете myProfile в скрипта, както е показано по-долу, и създайте FirefoxПрофилен обект.

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

Стъпка 3) Сега трябва да зададем свойствата „setAcceptUntrustedCertificates“ и „setAssumeUntrustedCertificateIssuer“ във Fire. Fox профил.

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

Стъпка 4) Сега използвай ОгъняFox профил в ОгъняFox обект на драйвера.

WebDriver driver = new FirefoxDriver (ffProfile)

Забележка: "setAcceptUntrustedCertificates„и“setAssumeUntrustedCertificateIssuer„са възможности за обработка на грешки в сертификатите в уеб браузърите.“

⚠️ Бележка към версията: кодът, базиран на профил, по-горе е насочен към Selenium 2 и Selenium 3. за Selenium 4 профилът е прикрепен чрез FirefoxОпции и Firefox приема несигурни сертификати по подразбиране.

Обработка на грешки при SSL сертификат в Chrome

За обработка на SSL грешки в Chrome, обектът DesiredCapabilities по-долу приема всеки SSL сертификат, така че потребителят не вижда предупреждение за сертификата по време на изпълнението.

Трябва да създадем екземпляр на класа DesiredCapabilities, както е показано по-долу: -

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

⚠️ Бележка към версията: CapabilityType.ACCEPT_SSL_CERTS принадлежи към стария JSON Wire Protocol. Заменете го с фрагмента ChromeOptions, показан по-рано при изпълнение. Selenium 4.

Обработка на грешки в SSL сертификат в IE

За разлика от обработката на SSL сертификати в браузъра Chrome и Firefox, в IE може да се наложи да го обработите, използвайки JavaScript.

За да се справите със SSL сертификата в IE, можете да се справите с тази ситуация по два начина.

Метод 1) Кликнете върху връзката „Продължете към този уебсайт (не се препоръчва)“ в рекламното поле. Тази връзка носи идентификатор „overridelink“, който можете да потвърдите в HTML панела, отворен с F12, както е показано на екранната снимка по-долу.

Предупреждение за сертификат на Internet Explorer с връзката за отмяна „Продължете към този уебсайт“

Кликнете върху връзката, като използвате метода driver.navigate() с JavaСкриптът, както е показано по-долу: -

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

Метод 2) Вторият метод е доста подобен на кода за обработка на SSL в Chrome.

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

Горният код ще помогне за справяне с грешка в SSL сертификата в IE.

⚠️ Бележка към версията: Internet Explorer 11 беше пенсиониран през юни 2022 г. Изпълнете същия сценарий срещу Microsoft Edge с EdgeOptions или да използвате Edge в режим на IE, където остаряло приложение все още го изисква.

Въпроси и Отговори

Проектът Chromium работи badssl.com, който обслужва изтекли, самоподписани, отменени и поддомейни с грешен хост. Насочете тестов скрипт към expired.badssl.com, за да възпроизведете безопасно истински неуспех на сертификата.

Не. Selenium 4 го премахна в полза на класовете Options на браузъра. Създайте ChromeOptions, FirefoxOptions или обект EdgeOptions, извикайте setAcceptInsecureCerts(true) и го предайте на конструктора на драйвера.

Създайте обект EdgeOptions, извикайте setAcceptInsecureCerts(true) и го предайте на конструктора EdgeDriver. Моделът съвпада с Chrome, защото и двата браузъра споделят Chromium енджин.

SafariDriver няма превключвател accept-insecure-certs. Използвайте JavascriptИзпълнител за изпълнение на CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), което изчиства междинното съобщение само за тази сесия.

ERR_CERT_DATE_INVALID маркира изтекъл сертификат, ERR_CERT_REVOKED - отменен, а ERR_CERT_AUTHORITY_INVALID - самоподписан сертификат или ненадежден издател. Кодът посочва причината, преди да промените който и да е скрипт.

Машинното обучение групира неуспешните сертификати по код на грешка и хост, като отделя изтекъл сертификат за тестване от истински дефект. Това клъстериране предотвратява регистрирането на един проблем със средата като множество несвързани тестови грешки.

Да. Копилот на GitHub създава обекта Options и конструктора на драйвера от коментар, но проверете дали предлага setAcceptInsecureCerts, а не премахнатото извикване DesiredCapabilities.

Само в тестови среди. Приемането на всички сертификати скрива дефекти в изтичането на срока на валидност, името на хоста и веригата, така че дръжте флага извън производствените димни тестове и заявете сертификата изрично, когато сигурността се тества.

Обобщете тази публикация с: