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: