Hvordan håndtere SSL-sertifikat i Selenium

⚡ Smart oppsummering

SSL-sertifikatfeil stopper en Selenium test øyeblikket en nettleser avviser et upålitelig eller utløpt sertifikat, så hvert WebDriver-skript trenger en nettleserspesifikk funksjon som godtar sertifikatet og lar automatiseringen fortsette.

  • 🔘 Definisjon: SSL krypterer trafikk mellom nettleser og server, og sertifikatet beviser serveridentiteten.
  • ☑️ Feilutløser: Nettlesere blokkerer upålitelige, utløpte, tilbakekalte eller selvsignerte sertifikater og viser en advarselsside.
  • Firefox: A Firefox profilen setter setAcceptUntrustedCertificates og setAssumeUntrustedCertificateIssuer før driveren starter.
  • 🧪 Chrome: DesiredCapabilities med ACCEPT_SSL_CERTS godtar sertifikatet på Selenium 2 og Selenium 3.
  • 🛠️ Internet Explorer: A JavaSkriptklikk på overridelink-elementet hopper over advarselssiden.
  • ⚠️ Selenium 4: angi Godta usikre sertifikater på Chrome-alternativer, FirefoxAlternativer eller EdgeOptions erstatter DesiredCapabilities.

Hvordan håndtere SSL-sertifikat i Selenium

SSL-sertifikat i Selenium

SSL (Secure Sockets Layer) er en standard sikkerhetsprotokoll for å etablere en sikker forbindelse mellom serveren og klienten som er en nettleser.

Et SSL-sertifikat beskytter data som flyttes mellom serveren og klientapplikasjonen med sterk kryptering og en digital signatur. Nettstedseieren installerer enten et SSL-sertifikat eller et kodesigneringssertifikat.

Fordeler med SSL-sertifikat

Det er mange fordeler ved å bruke SSL-sertifikat som,

  • Man kan øke deres brukeres og kunders tillit for å øke virksomhetens vekst raskt
  • Disse sertifikatene bidrar til å sikre nettbaserte transaksjoner og kundesensitiv informasjon som kredittkort-/debetkortdata, etc.
  • Signeringssertifikat har en tendens til å få et maksimalt antall nedlastinger og gode anmeldelser fra brukere.

SSL-sikrede nettsteder begynner med https:// og du kan se et låsikon eller en grønn adresselinje hvis tilkoblingen er sikkert etablert.

For eksempel, hvis du ønsker å gjøre en transaksjon via nettbank eller ønsker å kjøpe en Mobil telefon via e-handelsside som Flipkart eller Amazon.

Hva skjer mellom nettleseren og serveren

  1. En nettleser prøver å koble til et nettsted som er sikret med SSL. Nettleseren ber webserveren om å identifisere seg
  2. Serveren sender nettleseren en kopi av SSL-sertifikatet
  3. Nettleseren bekrefter om SSL-sertifikatet er ekte. I så fall sender den en melding til serveren
  4. Serveren sender tilbake en digitalt signert bekreftelse for å starte en SSL-kryptert økt
  5. De krypterte dataene deles mellom serveren og nettleseren

Kortnummer og påloggingsinformasjon overføres i løpet av den økten, så utvekslingen må forbli kryptert ende til ende og kan ikke avlyttes.

For eksempel bekrefter hengelåsen og adressefeltet nedenfor at sertifikatet ble akseptert.

  1. typen https://netbanking.hdfcbank.com/netbanking/ .
  2. Trykk Enter.
  3. Du vil se en grønn adresselinje i nettleseren som nedenfor:-

Grønn adressefelt i nettleseren for en HDFC nettbankside sikret med SSL

Hvordan skaper SSL-sertifikatet en sikker tilkobling

Diagrammet nedenfor trachåndtrykket, og de nummererte trinnene som følger forklarer hver utveksling.

Diagram over SSL-håndtrykket mellom en nettleser og en webserver

  1. nett~~POS=TRUNC leseren~~POS=HEADCOMP sender HTTPS-forespørsel til serveren.
  2. Nå må serveren gi en viss identifikasjon til nettleseren for å bevise at den er klarert. Dette kan gjøres ved å sende en kopi av SSL-sertifikatet til nettleseren.
  3. Hver nettleser har sin egen liste over klarerte CA'er. Nettleseren sjekker sertifikatroten mot listen over klarerte CA-er og at sertifikatet ikke er utløpt, ikke tilbakekalt, og at det vanlige navnet er gyldig for nettstedet det kobles til.
  4. Hvis nettleseren stoler på sertifikatet, opprettes en kryptert økt mellom serveren og nettleseren.
  5. Server og nettleser kan sende krypterte meldinger

Typer SSL-sertifikater

Nettleseren og serveren bruker SSL-sertifikatmekanismen for å kunne etablere en sikker tilkobling. Denne forbindelsen innebærer verifisering av tre typer sertifikater.

  • Root
  • Mellom
  • Serversertifikat

Prosess for å få SSL-sertifikat

Prosessen med å få SSL-sertifikat inkluderer trinnene nedenfor:

  1. Først må du opprette CSR-forespørsel (opprett en forespørsel om sertifikatsignering).
  2. CSR-forespørsel oppretter CSR-datafil, som sendes til SSL-sertifikatutsteder kjent som CA (Certificate Authority).
  3. CA bruker CSR-datafilene til å lage SSL-sertifikat for serveren din.
  4. Etter å ha mottatt SSL-sertifikatet, må du installere det på serveren din.
  5. Det er også nødvendig å installere et mellomsertifikat som knytter ditt SSL-sertifikat til CAs rotsertifikat.

Bildet nedenfor representerer alle de tre sertifikatet- Rot-, mellom- og serversertifikat.

Sertifikatkjede som viser rot-, mellom- og server-SSL-sertifikatene

Hvordan SSL-sertifikater bekreftes

SSL fungerer gjennom en kombinasjon av programmer og kryptering/dekrypteringsrutine som finnes på nettserverdatamaskinen og nettservernettleseren.

SSL-sertifikatet inneholder i utgangspunktet informasjonen nedenfor.

  1. Emne som er identiteten til nettstedets eier.
  2. Gyldighetsinformasjon - en offentlig og en privat nøkkel.

Den private og den offentlige nøkkelen er to unikt relaterte kryptografiske nøkler (tall). Alt som er kryptert med en offentlig nøkkel kan bare dekrypteres med en privat nøkkel. En nettleser viser disse feltene når sertifikatet inspiseres, som vist nedenfor.

Ruten for sertifikatdetaljer som viser emne, gyldighetsperiode og offentlig nøkkel

Når en sikker forbindelse ikke er etablert mellom serveren og klienten på grunn av sertifikatet, vil følgende SSL-sertifikatfeil vises.

Typer SSL-sertifikatfeil

La oss si at du skriver en https-forespørsel, og nettleseren svarer med «Denne tilkoblingen er ikke klarert» eller «Nettstedets sikkerhetssertifikat er ikke klarert». Nettleseren kunne ikke opprette en sikker tilkobling med det presenterte sertifikatet, så den stopper og ber brukeren om å iverksette nødvendige tiltak.

Feiltypene du sannsynligvis vil se på grunn av sertifikater i forskjellige nettlesere kan være noe som dette

  1. BrannFox – Denne forbindelsen er ikke klarert
  2. Google Chrome – Sikkerheten til dette nettstedet er ikke klarert
  3. Internet Explorer (IE) – Dette sikkerhetssertifikatet presentert av dette nettstedet ble ikke klarert av en klarert sertifiseringsinstans (CA)

Skjermbildet nedenfor viser mellomrommet som et uklarert sertifikat produserer.

Advarselsside for uklarerte tilkoblinger vist av en nettleser for et ugyldig SSL-sertifikat

Hvordan håndtere SSL-sertifikatfeil ved å bruke Selenium Webdriver

Anta at testskript kommer til siden «Uklarert tilkobling» ovenfor. Skriptet må justeres slik at det tar seg av SSL-unntaket selv, utelukkende gjennom automatisering.

Endringen avhenger av nettleserforekomsten som brukes, og det er her ønskede funksjoner kommer inn i bildet. Ønskede funksjoner konfigurerer driverforekomsten av Selenium Nettdriver, inkludert ChromeDriver, FirefoxDriver og Internet Explorer.

Trinnene nedenfor kan legges til en Selenium skript for å fjerne situasjonen med «Uklarert tilkobling» for hver nettleser.

⚠️ Selenium 4-notat: DesiredCapabilities-klassen ble fjernet i Selenium 4. Nettleserens alternativklasser har nå den samme innstillingen gjennom én W3C-funksjon, aksepterUsikre sertifikater.

nett~~POS=TRUNC leseren~~POS=HEADCOMP Selenium 4 klasse Anrop
Chrome Chrome-alternativer setAcceptUsikreSertifikater(true)
Firefox Firefoxalternativer setAcceptUsikreSertifikater(true)
Edge Kantalternativer setAcceptUsikreSertifikater(true)
Safari Javascriptbyrder midlertidig bypass-skript
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

SSL-sertifikatfeilhåndtering inn Firefox

For håndtering av SSL-sertifikatfeil i Firefox, må vi bruke ønskede evner til Selenium Webdriver og følg følgende trinn.

Trinn 1) Først må vi opprette en ny Firefox profil si "min profil".

Trinn 2) Nå får du tilgang til myProfile i skriptet som nedenfor og lag FirefoxProfilobjekt.

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

Trinn 3) Nå må vi angi egenskapene «setAcceptUntrustedCertificates» og «setAssumeUntrustedCertificateIssuer» i Fire. Fox profil.

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

Trinn 4) Bruk nå brannenFox profil i BrannFox sjåførobjekt.

WebDriver driver = new FirefoxDriver (ffProfile)

OBS: "setAcceptUntrustedCertificates"Og"setAssumeUntrustedCertificateIssuer«er muligheter for å håndtere sertifikatfeil i nettlesere.»

⚠️ Versjonsmerknad: den profilbaserte koden ovenfor mål Selenium 2 og Selenium 3. På Selenium 4 en profil er festet gjennom FirefoxAlternativer, og Firefox godtar usikre sertifikater som standard.

SSL-sertifikatfeilhåndtering i Chrome

For å håndtere SSL-feil i Chrome godtar DesiredCapabilities-objektet nedenfor alle SSL-sertifikater, slik at brukeren ikke ser noen sertifikatadvarsel under kjøringen.

Vi må lage en forekomst av DesiredCapabilities-klassen som nedenfor: -

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

⚠️ Versjonsmerknad: CapabilityType.ACCEPT_SSL_CERTS tilhører den gamle JSON Wire-protokollen. Erstatt den med ChromeOptions-kodebiten som ble vist tidligere når du kjører den. Selenium 4.

SSL-sertifikatfeilhåndtering i IE

I motsetning til å håndtere SSL-sertifikater i Chrome-nettleseren og Firefox, i IE, må du kanskje håndtere det ved hjelp av javascript.

For å håndtere SSL-sertifikat i IE, kan du håndtere denne situasjonen på to måter.

Metode 1) Klikk på lenken «Fortsett til dette nettstedet (anbefales ikke)» i mellomannonsen. Denne lenken har ID-en «overridelink», som du kan bekrefte i HTML-ruten som åpnes med F12, som skjermbildet nedenfor viser.

Advarsel om Internet Explorer-sertifikat med overstyringslenken «Fortsett til dette nettstedet»

Klikk på koblingen ved å bruke driver.navigate()-metoden med JavaSkript som nedenfor: -

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

Metode 2) Den andre metoden er ganske lik 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);

Koden ovenfor vil hjelpe til med å håndtere SSL-sertifikatfeil i IE.

⚠️ Versjonsmerknad: Internet Explorer 11 ble pensjonert i juni 2022. Kjør samme scenario mot Microsoft Edge med EdgeOptions, eller kjør Edge i IE-modus der et eldre program fortsatt krever det.

Spørsmål og svar

Chromium-prosjektet kjører badssl.com, som betjener utløpte, selvsignerte, tilbakekalte og feilvertsunderdomener. Rett et testskript mot expired.badssl.com for å reprodusere en ekte sertifikatfeil på en sikker måte.

Nei. Selenium 4 fjernet den til fordel for nettleserens alternativer-klasser. Bygg en ChromeOptions, FirefoxOptions- eller EdgeOptions-objektet, kall setAcceptInsecureCerts(true) og send det til driverkonstruktøren.

Opprett et EdgeOptions-objekt, kall setAcceptInsecureCerts(true) og send det til EdgeDriver-konstruktøren. Mønsteret samsvarer med Chrome fordi begge nettleserne deler Chromium-motoren.

SafariDriver har ingen bryter for å akseptere usikker sertifisering. Bruk JavascriptExecutor kjører CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), som bare tømmer mellomlegget for den økten.

ERR_CERT_DATE_INVALID markerer et utløpt sertifikat, ERR_CERT_REVOKED et tilbakekalt sertifikat og ERR_CERT_AUTHORITY_INVALID et selvsignert sertifikat eller en uklarert utsteder. Koden navngir årsaken før du endrer noe skript.

Maskinlæring grupperer sertifikatfeil etter feilkode og vert, og skiller et utløpt staging-sertifikat fra en ekte feil. Denne klyngingen hindrer at ett miljøproblem logges som mange urelaterte testfeil.

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

Kun i testmiljøer. Å godta alle sertifikater skjuler utløps-, vertsnavn- og kjedefeil, så hold flagget ute av produksjonsrøyktester og hevd sertifikatet eksplisitt når sikkerheten er under testing.

Oppsummer dette innlegget med: