Sådan håndteres SSL-certifikat i Selenium

⚡ Smart opsummering

SSL-certifikatfejl stopper en Selenium teste det øjeblik, en browser afviser et usikkert eller udløbet certifikat, så hvert WebDriver-script har brug for en browserspecifik funktion, der accepterer certifikatet og lader automatiseringen fortsætte.

  • 🔘 Definition: SSL krypterer trafikken mellem browser og server, og certifikatet beviser serverens identitet.
  • ☑️ Fejludløser: Browsere blokerer upålidelige, udløbne, tilbagekaldte eller selvsignerede certifikater og viser en advarselsside.
  • ✅ Firefox: A Firefox profilen indstiller setAcceptUntrustedCertificates og setAssumeUntrustedCertificateIssuer, før driveren starter.
  • 🧪 Chrome: DesiredCapabilities med ACCEPT_SSL_CERTS accepterer certifikatet den Selenium 2 og Selenium 3.
  • 🛠️ Internet Explorer: A JavaKlik på overridelink-elementet i scriptet springer advarselssiden over.
  • ⚠️ Selenium 4: sætAccepterUsikreCerts på ChromeOptions, FirefoxOptions eller EdgeOptions erstatter DesiredCapabilities.

Sådan håndteres SSL-certifikat i Selenium

SSL-certifikat i Selenium

SSL (Secure Sockets Layer) er en standard sikkerhedsprotokol til at etablere en sikker forbindelse mellem serveren og klienten, som er en browser.

Et SSL-certifikat beskytter data, der flyttes mellem serveren og klientapplikationen, med stærk kryptering og en digital signatur. Webstedsejeren installerer enten et SSL-certifikat eller et kodesigneringscertifikat.

Fordele ved SSL-certifikat

Der er en række fordele ved at bruge SSL-certifikat som,

  • Man kan øge deres brugeres og kunders tillid for at øge virksomhedens vækst hurtigt
  • Disse certifikater hjælper med at sikre onlinetransaktioner og kunders følsomme oplysninger som kreditkort-/debetkortdata osv.
  • Signeringscertifikat har en tendens til at få et maksimalt antal downloads og gode anmeldelser fra brugere.

SSL-sikrede websteder begynder med https:// og du kan se et låseikon eller en grøn adresselinje, hvis forbindelsen er sikkert etableret.

For eksempel, hvis du ønsker at foretage en transaktion via netbank eller ønsker at købe en Mobil telefon gennem e-handelsside såsom Flipkart eller Amazon.

Hvad sker der mellem webbrowseren og serveren

  1. En browser forsøger at oprette forbindelse til et websted, der er sikret med SSL. Browseren anmoder webserveren om at identificere sig selv
  2. Serveren sender browseren en kopi af dens SSL-certifikat
  3. Browseren verificerer, om SSL-certifikatet er ægte. Hvis det er tilfældet, sender den en besked til serveren
  4. Serveren sender en digitalt signeret bekræftelse tilbage for at starte en SSL-krypteret session
  5. De krypterede data deles mellem serveren og browseren

Kortnumre og loginoplysninger overføres i den session, så udvekslingen skal forblive krypteret ende til ende og kan ikke opsnappes.

For eksempel bekræfter hængelåsen og adresselinjen nedenfor, at certifikatet blev accepteret.

  1. Type https://netbanking.hdfcbank.com/netbanking/ .
  2. Hit Enter.
  3. Du vil se en grøn adresselinje i browseren som nedenfor:-

Grøn adresselinje i browseren for en HDFC netbankside sikret med SSL

Hvordan opretter SSL-certifikatet en sikker forbindelse

Diagrammet nedenfor trachåndtrykket, og de nummererede trin, der følger, forklarer hver udveksling.

Diagram over SSL-handshake mellem en webbrowser og en webserver

  1. browser sender HTTPS-anmodning til serveren.
  2. Nu skal serveren give en vis identifikation til browseren for at bevise, at den er tillid til. Dette kan gøres ved at sende en kopi af dets SSL-certifikat til browseren.
  3. Hver browser har sin egen liste over betroede CA'er. Browser kontrollerer certifikatroden i forhold til dens liste over betroede CA'er, og at certifikatet er uudløbet, ikke tilbagekaldt, og at det fælles navn er gyldigt for det websted, det opretter forbindelse til.
  4. Hvis browseren har tillid til certifikatet, oprettes en krypteret session mellem serveren og browseren.
  5. Server og browser kan sende krypterede beskeder

Typer af SSL-certifikater

Browseren og serveren bruger SSL-certifikatmekanismen for at kunne etablere en sikker forbindelse. Denne forbindelse involverer verifikation af tre typer certifikater.

  • Root
  • Mellem
  • Servercertifikat

Processen med at få et SSL-certifikat

Processen med at få SSL-certifikat inkluderer følgende trin: -

  1. Først skal du oprette en CSR-anmodning (opret en anmodning om certifikatsignering).
  2. CSR-anmodning opretter CSR-datafil, som sendes til SSL-certifikatudsteder kendt som CA (Certificate Authority).
  3. CA'en bruger CSR-datafilerne til at oprette SSL-certifikat til din server.
  4. Efter at have modtaget SSL-certifikatet, skal du installere det på din server.
  5. Der skal også installeres et mellemcertifikat, som forbinder dit SSL-certifikat med CA's rodcertifikat.

Billedet nedenfor repræsenterer alle de tre certifikater- Root-, Mellem- og Servercertifikat.

Certifikatkæde, der viser rod-, mellem- og server-SSL-certifikater

Hvordan SSL-certifikater verificeres

SSL fungerer gennem en kombination af programmer og kryptering/dekrypteringsrutine, der findes på webservercomputeren og webserverbrowseren.

SSL-certifikatet indeholder grundlæggende oplysninger nedenfor.

  1. Emne, som er webstedsejerens identitet.
  2. Gyldighedsinformation - en offentlig og en privat nøgle.

Den private og den offentlige nøgle er to unikt relaterede kryptografiske nøgler (tal). Alt, der er krypteret med en offentlig nøgle, kan kun dekrypteres med en privat nøgle. En browser viser disse felter, når certifikatet inspiceres, som vist nedenfor.

Ruden med certifikatoplysninger, der viser emne, gyldighedsperiode og offentlig nøgle

Når der ikke er etableret en sikker forbindelse mellem serveren og klienten på grund af certifikatet, vil følgende SSL-certifikatfejl blive manifesteret.

Typer af SSL-certifikatfejl

Forestil dig, at du skriver en https-anmodning, og browseren svarer med "Denne forbindelse er ikke tillid" eller "Webstedets sikkerhedscertifikat er ikke tillid". Browseren kunne ikke oprette en sikker forbindelse med det præsenterede certifikat, så den stopper og beder brugeren om at foretage sig det nødvendige.

De fejltyper, du sandsynligvis vil se på grund af certifikat i forskellige browsere, kan være noget lignende

  1. BrandFox - Denne forbindelse er ikke sikker
  2. Google Chrome – Denne sides sikkerhed er ikke betroet
  3. Internet Explorer (IE) – Dette sikkerhedscertifikat præsenteret af denne hjemmeside blev ikke betroet af en betroet certifikatmyndighed (CA)

Skærmbilledet nedenfor viser den mellemliggende meddelelse, som et ikke-tillidsfuldt certifikat producerer.

Advarselsside om upålidelig forbindelse vist af en browser for et ugyldigt SSL-certifikat

Sådan håndterer du SSL-certifikatfejl ved hjælp af Selenium Webdriver

Antag, at test script rammer siden "Upålidelig forbindelse" ovenfor. Scriptet skal justeres, så det selv håndterer SSL-undtagelsen, udelukkende via automatisering.

Ændringen afhænger af den anvendte browserinstans, og det er her, de ønskede funktioner kommer ind i billedet. Desired Capabilities konfigurerer driverinstansen af Selenium Webdriver, inklusive ChromeDriver, FirefoxDriver og Internet Explorer.

Trinene nedenfor kan tilføjes til en Selenium script til at afhjælpe situationen med "Upålidelig forbindelse" for hver browser.

⚠️ Selenium 4-note: DesiredCapabilities-klassen blev fjernet i Selenium 4. Browserindstillingerne har nu den samme indstilling via en enkelt W3C-funktion, acceptUsikreCerts.

browser Selenium 4 klasse Ring til os på
Chrome Chrome-indstillinger sætAccepterUsikreCerts(sand)
Firefox FirefoxIndstillinger sætAccepterUsikreCerts(sand)
Edge EdgeOptions sætAccepterUsikreCerts(sand)
Safari JavascriptExecutor midlertidigt bypass-script
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

SSL-certifikatfejlhåndtering ind Firefox

Til håndtering af SSL-certifikatfejl i Firefox, skal vi bruge ønskede muligheder for Selenium Webdriver og følg følgende trin.

Trin 1) Først skal vi oprette en ny Firefox profil sige "min profil".

Trin 2) Få nu adgang til minProfil i scriptet som nedenfor og opret FirefoxProfilobjekt.

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

Trin 3) Nu skal vi indstille egenskaberne "setAcceptUntrustedCertificates" og "setAssumeUntrustedCertificateIssuer" i Fire. Fox profil.

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

Trin 4) Brug nu IldenFox profil i IldenFox førerobjekt.

WebDriver driver = new FirefoxDriver (ffProfile)

Bemærk: "sætAcceptUntrustedCertificates“Og”setAssumeUntrustedCertificateIssuer"er muligheder for at håndtere certifikatfejl i webbrowsere."

⚠️ Versionsnotat: den profilbaserede kode ovenfor mål Selenium 2 og Selenium 3. På Selenium 4 en profil er fastgjort gennem FirefoxValgmuligheder, og Firefox accepterer usikre certifikater som standard.

SSL-certifikatfejlhåndtering i Chrome

For at håndtere SSL-fejl i Chrome accepterer DesiredCapabilities-objektet nedenfor alle SSL-certifikater, så brugeren ikke ser nogen certifikatadvarsel under kørslen.

Vi skal oprette en instans af DesiredCapabilities-klassen som nedenfor: -

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

⚠️ Versionsnotat: CapabilityType.ACCEPT_SSL_CERTS tilhører den gamle JSON Wire-protokol. Erstat den med ChromeOptions-kodestykket, der blev vist tidligere under kørsel. Selenium 4.

SSL-certifikatfejlhåndtering i IE

I modsætning til håndtering af SSL-certifikater i Chrome browser og FirefoxI IE skal du muligvis håndtere det ved hjælp af javascript.

For at håndtere SSL-certifikater i IE kan du håndtere denne situation på to måder.

Metode 1) Klik på linket “Fortsæt til denne hjemmeside (anbefales ikke)” i den interstitielle annonce. Dette link har ID'et “overridelink”, som du kan bekræfte i HTML-ruden, der åbnes med F12, som skærmbilledet nedenfor viser.

Advarsel om Internet Explorer-certifikat med linket "Fortsæt til dette websted" tilsidesætter

Klik på linket ved hjælp af driver.navigate() metoden med JavaScript som nedenfor: -

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

Metode 2) Den anden metode minder meget om Chromes SSL-håndteringskode.

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

Ovenstående kode hjælper med at håndtere SSL-certifikatfejl i IE.

⚠️ Versionsnotat: Internet Explorer 11 blev udfaset i juni 2022. Kør det samme scenarie mod Microsoft Edge med EdgeOptions, eller kør Edge i IE-tilstand, hvor et ældre program stadig kræver det.

Ofte Stillede Spørgsmål

Chromium-projektet kører badssl.com, som betjener udløbne, selvsignerede, tilbagekaldte og forkert-hostede underdomæner. Peg et testscript på expired.badssl.com for at reproducere en reel certifikatfejl sikkert.

Nej. Selenium 4 fjernede det til fordel for browser Options-klasserne. Byg en ChromeOptions, FirefoxOptions- eller EdgeOptions-objektet, kald setAcceptInsecureCerts(true) og send det til driverkonstruktøren.

Opret et EdgeOptions-objekt, kald setAcceptInsecureCerts(true) og send det til EdgeDriver-konstruktøren. Mønsteret matcher Chrome, fordi begge browsere deler Chromium-motoren.

SafariDriver har ingen accept-insecure-certs-switch. Brug JavascriptExecutor til at køre CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), som kun rydder den interstitielle meddelelse for den pågældende session.

ERR_CERT_DATE_INVALID markerer et udløbet certifikat, ERR_CERT_REVOKED et tilbagekaldt certifikat, og ERR_CERT_AUTHORITY_INVALID et selvsigneret certifikat eller en ikke-tillidsfuld udsteder. Koden angiver årsagen, før du ændrer et script.

Maskinlæring grupperer certifikatfejl efter fejlkode og vært og adskiller et udløbet staging-certifikat fra en ægte defekt. Denne klyngedannelse forhindrer ét miljøproblem i at blive logget som mange uafhængige testfejl.

Ja. GitHub Copilot udkaster Options-objektet og driverkonstruktøren fra en kommentar, men kontroller at den foreslår setAcceptInsecureCerts i stedet for det fjernede DesiredCapabilities-kald.

Kun i testmiljøer. Accept af alle certifikater skjuler udløbs-, værtsnavns- og kædefejl, så hold flaget ude af produktionsrøgtests og anerkend certifikatet eksplicit, når sikkerheden testes.

Opsummer dette indlæg med: