Kako rukovati SSL certifikatom u Selenium

⚡ Pametni sažetak

Pogreške SSL certifikata zaustavljaju Selenium testirati trenutak kada preglednik odbije nepouzdani ili istekli certifikat, stoga svaka WebDriver skripta treba mogućnost specifičnu za preglednik koja prihvaća certifikat i omogućuje nastavak automatizacije.

  • 🔘 Definicija: SSL šifrira promet između preglednika i poslužitelja, a certifikat dokazuje identitet poslužitelja.
  • ☑️ Okidač pogreške: Preglednici blokiraju nepouzdane, istekle, opozvane ili samopotpisane certifikate i prikazuju stranicu upozorenja.
  • ✅ Firefox: A Firefox Profil postavlja setAcceptUntrustedCertificates i setAssumeUntrustedCertificateIssuer prije pokretanja upravljačkog programa.
  • 🧪 Chrome: DesiredCapabilities s ACCEPT_SSL_CERTS prihvaća certifikat na Selenium 2 i Selenium 3.
  • 🛠️ Internet Explorer: A JavaKlik skripte na element overridelink preskače stranicu upozorenja.
  • ⚠️ Selenium 4: setAcceptInsecureCerts u Chromeovim opcijama, FirefoxOptions ili EdgeOptions zamjenjuje DesiredCapabilities.

Kako rukovati SSL certifikatom u Selenium

SSL certifikat u Selenium

SSL (Secure Sockets Layer) je standardni sigurnosni protokol za uspostavljanje sigurne veze između poslužitelja i klijenta koji je preglednik.

SSL certifikat štiti podatke koji se kreću između poslužitelja i klijentske aplikacije snažnom enkripcijom i digitalnim potpisom. Vlasnik web-mjesta instalira SSL certifikat ili certifikat za potpisivanje koda.

Prednosti SSL certifikata

Postoje brojne prednosti korištenja SSL certifikata kao što su,

  • Može se povećati povjerenje korisnika i kupaca kako bi se ubrzao rast poslovanja
  • Ovi certifikati pomažu u zaštiti mrežnih transakcija i osjetljivih podataka o klijentima kao što su podaci kreditne/debitne kartice itd.
  • Certifikat za potpisivanje ima tendenciju dobivanja maksimalnog broja preuzimanja i dobrih recenzija od korisnika.

Web stranice zaštićene SSL-om počinju s https:// i možete vidjeti ikonu lokota ili zelenu adresnu traku ako je veza sigurno uspostavljena.

Na primjer, ako želite obaviti neku transakciju putem net bankarstva ili želite kupiti a Kontakt broj telefona putem web stranice za e-trgovinu kao što je Flipkart ili Amazon.

Što se događa između web preglednika i poslužitelja

  1. Preglednik se pokušava povezati s web-stranicom zaštićenom SSL-om. Preglednik traži od web poslužitelja da se identificira
  2. Poslužitelj šalje pregledniku kopiju svog SSL certifikata
  3. Preglednik provjerava je li SSL certifikat originalan. Ako je tako, šalje poruku poslužitelju
  4. Poslužitelj šalje natrag digitalno potpisanu potvrdu za početak SSL šifrirane sesije
  5. Šifrirani podaci dijele se između poslužitelja i preglednika

Brojevi kartica i pristupni podaci putuju tijekom te sesije, tako da razmjena mora ostati šifrirana od početka do kraja i ne može se presresti.

Na primjer, lokot i adresna traka ispod potvrđuju da je certifikat prihvaćen.

  1. Tip https://netbanking.hdfcbank.com/netbanking/ .
  2. Pritisnite Enter.
  3. Vidjet ćete zelenu adresnu traku u pregledniku kao ispod:-

Zelena adresna traka u pregledniku za HDFC net banking stranicu zaštićenu SSL-om

Kako SSL certifikat stvara sigurnu vezu

Dijagram ispod tracrukovanje, a numerirani koraci koji slijede objašnjavaju svaku razmjenu.

Dijagram SSL rukovanja između web preglednika i web poslužitelja

  1. preglednik šalje HTTPS zahtjev poslužitelju.
  2. Poslužitelj sada mora pružiti neku identifikaciju pregledniku kako bi dokazao da mu se vjeruje. To se može učiniti slanjem kopije njegovog SSL certifikata pregledniku.
  3. Svaki preglednik ima vlastiti popis pouzdanih CA-ova. Preglednik provjerava korijen certifikata prema svom popisu pouzdanih CA-ova i provjerava je li certifikat istekao, nije opozvan te je li uobičajeno ime važeće za web mjesto s kojim se povezuje.
  4. Ako preglednik vjeruje certifikatu, stvara se šifrirana sesija između poslužitelja i preglednika.
  5. Poslužitelj i preglednik mogu slati šifrirane poruke

Vrste SSL certifikata

Preglednik i poslužitelj koriste mehanizam SSL certifikata kako bi mogli uspostaviti sigurnu vezu. Ova veza uključuje provjeru tri vrste certifikata.

  • Korijen
  • Srednji
  • Certifikat poslužitelja

Proces dobivanja SSL certifikata

Proces dobivanja SSL certifikata uključuje sljedeće korake:-

  1. Prvo morate izraditi zahtjev za CSR (kreiranje zahtjeva za potpisivanje certifikata).
  2. CSR zahtjev stvara CSR podatkovnu datoteku koja se šalje izdavaču SSL certifikata poznatom kao CA (Certificate Authority).
  3. CA koristi CSR podatkovne datoteke za stvaranje SSL certifikata za vaš poslužitelj.
  4. Nakon što primite SSL certifikat, morate ga instalirati na svoj poslužitelj.
  5. Također je potrebno instalirati posredni certifikat koji povezuje vaš SSL certifikat s CA korijenskim certifikatom.

Donja slika predstavlja sva tri certifikata- Root, Intermediate i Server Certificate.

Lanac certifikata koji prikazuje korijenske, među- i poslužiteljske SSL certifikate

Kako se provjeravaju SSL certifikati

SSL radi kroz kombinaciju programa i rutine šifriranja/dešifriranja koji postoje na računalu web poslužitelja i pregledniku web poslužitelja.

SSL certifikat u osnovi sadrži podatke ispod.

  1. Predmet koji je identitet vlasnika web stranice.
  2. Informacije o valjanosti - javni i privatni ključ.

Privatni i javni ključ su dva jedinstveno povezana kriptografska ključa (broja). Sve što je šifrirano javnim ključem može se dešifrirati samo privatnim ključem. Preglednik prikazuje ta polja kada se certifikat pregledava, kao što je prikazano dolje.

Okno s detaljima certifikata s popisom predmeta, razdoblja važenja i javnog ključa

Kada se ne uspostavi sigurna veza između poslužitelja i klijenta zbog certifikata, pojavit će se sljedeća pogreška SSL certifikata.

Vrste pogrešaka SSL certifikata

Pretpostavimo da upišete https zahtjev, a preglednik odgovori s „Ova veza nije pouzdana“ ili „Sigurnosni certifikat web-mjesta nije pouzdan“. Preglednik nije mogao uspostaviti sigurnu vezu s predstavljenim certifikatom, pa se zaustavlja i traži od korisnika da poduzme odgovarajuću radnju.

Vrste pogrešaka koje ćete vjerojatno vidjeti zbog certifikata u različitim preglednicima mogu biti otprilike ove

  1. VatraFox - Ova veza nije sigurna
  2. Google Chrome – Sigurnost ove stranice nije pouzdana
  3. Internet Explorer (IE) – Povjerljivo tijelo za izdavanje certifikata (CA) nije vjerovalo ovom sigurnosnom certifikatu koji predstavlja ovo web mjesto

Snimka zaslona u nastavku prikazuje međuprostor koji proizvodi nepouzdani certifikat.

Stranica upozorenja o nepouzdanoj vezi koju preglednik prikazuje zbog nevažećeg SSL certifikata

Kako riješiti pogrešku SSL certifikata korištenjem Selenium Webdriver

Pretpostavimo da je testni skript nailazi na stranicu "Nepouzdana veza" iznad. Skripta se mora prilagoditi tako da sama rješava SSL iznimku, isključivo putem automatizacija.

Promjena ovisi o instanci preglednika koja se koristi, i tu do izražaja dolaze željene mogućnosti. Željene mogućnosti konfiguriraju instancu upravljačkog programa za Selenium Webdriver, uključujući ChromeDriver, FirefoxVozač i Internet Explorer.

Koraci u nastavku mogu se dodati u Selenium skripta za brisanje situacije "Nepouzdana veza" za svaki preglednik.

⚠️ Selenium Napomena iz 4.: Klasa DesiredCapabilities je uklonjena u Selenium 4. Klase opcija preglednika sada nose istu postavku putem jedne W3C mogućnosti, prihvatiNesigurneCertifikate.

preglednik Selenium 4 klasa poziv
krom ChromeOpcije postaviPrihvatiNesigurneCertifikate(true)
Firefox FirefoxOpcije postaviPrihvatiNesigurneCertifikate(true)
rub Opcije ruba postaviPrihvatiNesigurneCertifikate(true)
safari Javascriptizvršitelj privremeni zaobilazni skript
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Upravljanje pogreškom SSL certifikata Firefox

Za rješavanje pogreške SSL certifikata u Firefox, moramo koristiti željene mogućnosti Selenium Webdriver i slijedite sljedeće korake.

Korak 1) Prvo moramo stvoriti novi Firefox profil reci "moj profil".

Korak 2) Sada pristupite mom profilu u skripti kao u nastavku i kreirajte FirefoxObjekt profila.

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

Korak 3) Sada moramo postaviti svojstva "setAcceptUntrustedCertificates" i "setAssumeUntrustedCertificateIssuer" u Fireu. Fox profil.

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

Korak 4) Sada upotrijebite VatruFox profil u VatrenomFox objekt vozača.

WebDriver driver = new FirefoxDriver (ffProfile)

Bilješka: "setAcceptUntrustedCertificates"i"setAssumeUntrustedCertificateIssuer„su mogućnosti za rješavanje pogrešaka certifikata u web preglednicima.“

⚠️ Napomena o verziji: gore navedeni kod temeljen na profilu cilja Selenium 2 i Selenium 3. Na Selenium 4 profil je pričvršćen kroz FirefoxOpcije i Firefox prema zadanim postavkama prihvaća nesigurne certifikate.

Rješavanje pogreške SSL certifikata u Chromeu

Za rukovanje SSL greškom u Chromeu, objekt DesiredCapabilities u nastavku prihvaća svaki SSL certifikat, tako da korisnik ne vidi upozorenje o certifikatu tijekom izvođenja.

Moramo stvoriti instancu klase DesiredCapabilities kao što je prikazano u nastavku:-

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

⚠️ Napomena o verziji: CapabilityType.ACCEPT_SSL_CERTS pripada starom JSON Wire Protocolu. Zamijenite ga s isječkom ChromeOptions prikazanim ranije prilikom pokretanja. Selenium 4.

Rukovanje pogreškama SSL certifikata u IE

Za razliku od rukovanja SSL certifikatima u pregledniku Chrome i Firefox, u IE-u, možda ćete to morati riješiti pomoću javascript.

Za rukovanje SSL certifikatom u IE-u, ovu situaciju možete riješiti na dva načina.

Metoda 1) Kliknite poveznicu „Nastavi na ovu web stranicu (ne preporučuje se)“ u međuprostoru. Ta poveznica nosi ID „overridelink“, što možete potvrditi u HTML oknu otvorenom tipkom F12, kao što je prikazano na slici ispod.

Upozorenje o certifikatu Internet Explorera s vezom za nadjačavanje Nastavi na ovu web-stranicu

Kliknite na vezu pomoću metode driver.navigate() s JavaSkripta kao u nastavku: -

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

Metoda 2) Druga metoda je prilično slična kodu za rukovanje SSL-om u Chromeu.

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

Gornji kôd pomoći će u rješavanju pogreške SSL certifikata u IE.

⚠️ Napomena o verziji: Internet Explorer 11 je ukinut u lipnju 2022. Pokrenite isti scenarij protiv Microsoft Edge s EdgeOptions ili pokrenite Edge u IE načinu rada gdje ga naslijeđena aplikacija i dalje zahtijeva.

Pitanja i odgovori

Projekt Chromium se pokreće badssl.com, koji poslužuje istekle, samopotpisane, opozvane i poddomene s pogrešnim hostom. Usmjerite testni skript na expired.badssl.com kako biste sigurno reproducirali stvarni kvar certifikata.

Ne. Selenium 4 ga je uklonio u korist klasa Options preglednika. Izradi ChromeOptions, FirefoxOptions ili EdgeOptions objekt, pozovite setAcceptInsecureCerts(true) i proslijedite ga konstruktoru upravljačkog programa.

Izradite objekt EdgeOptions, pozovite setAcceptInsecureCerts(true) i proslijedite ga konstruktoru EdgeDriver. Uzorak odgovara Chromeu jer oba preglednika dijele Chromium engine.

SafariDriver nema prekidač za prihvaćanje nesigurnih certifikata. Koristite JavascriptIzvršni program pokreće CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), koji briše međuprostor samo za tu sesiju.

ERR_CERT_DATE_INVALID označava istekli certifikat, ERR_CERT_REVOKED opozvani, a ERR_CERT_AUTHORITY_INVALID samopotpisani certifikat ili nepouzdanog izdavatelja. Kod imenuje uzrok prije nego što promijenite bilo koju skriptu.

Strojno učenje grupira neuspjehe certifikata prema kodu pogreške i hostu, odvajajući istekli testni certifikat od stvarnog nedostatka. To grupiranje sprječava da se jedan problem okruženja zabilježi kao mnogo nepovezanih testnih grešaka.

Da. GitHub kopilot izrađuje objekt Options i konstruktor upravljačkog programa iz komentara, ali provjerite predlaže li setAcceptInsecureCerts umjesto uklonjenog poziva DesiredCapabilities.

Samo u testnim okruženjima. Prihvaćanje svih certifikata skriva nedostatke isteka, naziva hosta i lanca, stoga držite zastavicu izvan produkcijskih dimnih testova i eksplicitno potvrdite certifikat kada se testira sigurnost.

Sažmite ovu objavu uz: