Hur man hanterar SSL-certifikat i Selenium

⚡ Smart sammanfattning

SSL-certifikatfel stoppar en Selenium testa det ögonblick då en webbläsare vägrar ett opålitligt eller utgånget certifikat, så varje WebDriver-skript behöver en webbläsarspecifik funktion som accepterar certifikatet och låter automatiseringen fortsätta.

  • 🔘 Definition: SSL krypterar trafiken mellan webbläsare och server, och certifikatet bekräftar serverns identitet.
  • ☑️ Felutlösare: Webbläsare blockerar otillförlitliga, utgångna, återkallade eller självsignerade certifikat och visar en varningssida.
  • Firefox: A Firefox profilen anger setAcceptUntrustedCertificates och setAssumeUntrustedCertificateIssuer innan drivrutinen startar.
  • 🧪 Krom: DesiredCapabilities med ACCEPT_SSL_CERTS accepterar certifikatet den Selenium 2 och Selenium 3.
  • 🛠️ Internet Explorer: A JavaOm man klickar på overridelink-elementet hoppas varningssidan över.
  • ⚠️ Selenium 4: setAccepteraOsäkraCerts på ChromeAlternativ, FirefoxOptions eller EdgeOptions ersätter DesiredCapabilities.

Hur man hanterar SSL-certifikat i Selenium

SSL-certifikat in Selenium

SSL (Secure Sockets Layer) är ett standard säkerhetsprotokoll för att upprätta en säker anslutning mellan servern och klienten som är en webbläsare.

Ett SSL-certifikat skyddar data som flyttas mellan servern och klientapplikationen med stark kryptering och en digital signatur. Webbplatsägaren installerar antingen ett SSL-certifikat eller ett kodsigneringscertifikat.

Fördelar med SSL-certifikat

Det finns flera fördelar med att använda SSL-certifikat som,

  • Man kan öka deras användares och kunders förtroende för att snabbt öka verksamhetens tillväxt
  • Dessa certifikat hjälper till att säkra onlinetransaktioner och kunders känslig information som kreditkorts-/betalkortsdata, etc.
  • Signeringscertifikat tenderar att få ett maximalt antal nedladdningar och bra recensioner från användare.

SSL-säkrade webbplatser börjar med https:// och du kan se en låsikon eller grön adressfält om anslutningen är säkert upprättad.

Till exempel, om du vill göra någon transaktion via nätbank eller vill köpa en Mobil telefon via e-handelssajt som Flipkart eller Amazon.

Vad händer mellan webbläsaren och servern

  1. En webbläsare försöker ansluta till en webbplats som är säkrad med SSL. Webbläsaren ber webbservern att identifiera sig
  2. Servern skickar en kopia av sitt SSL-certifikat till webbläsaren
  3. Webbläsaren verifierar om SSL-certifikatet är äkta. Om så är fallet skickas ett meddelande till servern
  4. Servern skickar tillbaka en digitalt signerad bekräftelse för att starta en SSL-krypterad session
  5. Den krypterade datan delas mellan servern och webbläsaren

Kortnummer och inloggningsuppgifter överförs under den sessionen, så utbytet måste förbli krypterat från början till slut och kan inte avlyssnas.

Till exempel bekräftar hänglåset och adressfältet nedan att certifikatet accepterades.

  1. Typ https://netbanking.hdfcbank.com/netbanking/ .
  2. Hit Enter.
  3. Du kommer att se ett grönt adressfält i webbläsaren enligt nedan:-

Grön adressfält i webbläsaren för en HDFC-nätbanksida säkrad med SSL

Hur skapar SSL-certifikatet en säker anslutning

Diagrammet nedan traces handslaget, och de numrerade stegen som följer förklarar varje utbyte.

Diagram över SSL-handskakningen mellan en webbläsare och en webbserver

  1. webbläsare skickar HTTPS-förfrågan till servern.
  2. Nu måste Server tillhandahålla en viss identifikation till webbläsaren för att bevisa att den är pålitlig. Detta kan göras genom att skicka en kopia av dess SSL-certifikat till webbläsaren.
  3. Varje webbläsare har sin egen lista över betrodda certifikatutfärdare. Webbläsaren kontrollerar certifikatroten mot dess lista över betrodda certifikatutfärdare och att certifikatet inte har löpt ut, inte har återkallats och att det gemensamma namnet är giltigt för webbplatsen som det ansluter till.
  4. Om webbläsaren litar på certifikatet skapas en krypterad session mellan servern och webbläsaren.
  5. Server och webbläsare kan skicka krypterade meddelanden

Typer av SSL-certifikat

Webbläsaren och servern använder SSL-certifikatmekanismen för att kunna upprätta en säker anslutning. Denna anslutning innebär verifiering av tre typer av certifikat.

  • Rot
  • Mellanliggande
  • Servercertifikat

Processen för att få SSL-certifikat

Processen för att få SSL-certifikat inkluderar följande steg: -

  1. Först måste du skapa CSR-begäran (skapa en begäran om certifikatsignering).
  2. CSR-begäran skapar CSR-datafil, som skickas till SSL-certifikatutfärdaren känd som CA (Certificate Authority).
  3. CA använder CSR-datafilerna för att skapa SSL-certifikat för din server.
  4. Efter att ha mottagit SSL-certifikatet måste du installera det på din server.
  5. Ett mellancertifikat behövs också för att installeras som knyter ditt SSL-certifikat till CA:s rotcertifikat.

Bilden nedan representerar alla tre certifikat- Rot-, mellan- och servercertifikat.

Certifikatkedja som visar rot-, mellan- och server-SSL-certifikat

Hur SSL-certifikat verifieras

SSL fungerar genom en kombination av program och kryptering/dekrypteringsrutin som finns på webbserverdatorn och webbserverns webbläsare.

SSL-certifikatet innehåller i princip nedanstående information.

  1. Ämne som är webbplatsägarens identitet.
  2. Giltighetsinformation - en offentlig och en privat nyckel.

Den privata och den publika nyckeln är två unikt relaterade kryptografiska nycklar (nummer). Allt som krypteras med en publik nyckel kan bara dekrypteras med en privat nyckel. En webbläsare visar dessa fält när certifikatet inspekteras, enligt nedan.

Fönster för certifikatinformation som visar ämne, giltighetsperiod och offentlig nyckel

När en säker anslutning inte upprättas mellan servern och klienten på grund av certifikatet, kommer följande SSL-certifikatfel att manifesteras.

Typer av SSL-certifikatfel

Anta att du skriver en https-förfrågan och webbläsaren svarar med "Denna anslutning är inte betrodd" eller "Webbplatsens säkerhetscertifikat är inte betrott". Webbläsaren kunde inte upprätta en säker anslutning med det presenterade certifikatet, så den stoppar och ber användaren att vidta lämpliga åtgärder.

De typer av fel du sannolikt kommer att se på grund av certifikat i olika webbläsare kan vara ungefär så här

  1. naturFox – Den här anslutningen är opålitlig
  2. Google Chrome – Den här webbplatsens säkerhet är inte betrodd
  3. Internet Explorer (IE) – Det här säkerhetscertifikatet som presenteras av den här webbplatsen var inte pålitligt av en betrodd certifikatutfärdare (CA)

Skärmdumpen nedan visar den mellansidesfil som ett opålitligt certifikat producerar.

Varningssida för otillförlitlig anslutning som visas av en webbläsare för ett ogiltigt SSL-certifikat

Hur man hanterar SSL-certifikatfel med hjälp av Selenium Webdriver

Anta att testskript öppnar sidan "Otillförlitlig anslutning" ovan. Skriptet måste justeras så att det tar hand om SSL-undantaget självt, enbart genom automatisering.

Ändringen beror på vilken webbläsarinstans som används, och det är här önskade funktioner kommer in i bilden. Önskade funktioner konfigurerar drivrutinsinstansen för Selenium Webbdrivrutin, inklusive ChromeDriver, FirefoxDrivrutin och Internet Explorer.

Stegen nedan kan läggas till i en Selenium skript för att åtgärda situationen med "Otillförlitlig anslutning" för varje webbläsare.

⚠️ Selenium 4-notering: DesiredCapabilities-klassen togs bort i Selenium 4. Webbläsarens alternativklass har nu samma inställning genom en enda W3C-funktion, accepteraOsäkraCerts.

webbläsare Selenium 4 klass Ring upp
krom ChromeAlternativ setAccepteraOsäkraCert(true)
Firefox FirefoxMontering setAccepteraOsäkraCert(true)
kant Kantalternativ setAccepteraOsäkraCert(true)
Safari JavascriptTestamentsexekutor tillfälligt kringgåningsskript
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

SSL-certifikatfelhantering in Firefox

För hantering av SSL-certifikatfel i Firefoxmåste vi använda önskade funktioner Selenium Webdriver och följ följande steg.

Steg 1) Först behöver vi skapa en ny Firefox profil säg “min profil".

Steg 2) Gå nu till myProfile i skriptet enligt nedan och skapa FirefoxProfilobjekt.

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

Steg 3) Nu behöver vi ställa in egenskaperna "setAcceptUntrustedCertificates" och "setAssumeUntrustedCertificateIssuer" i Fire. Fox profil.

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

Steg 4) Använd nu EldenFox profil i EldenFox förarobjekt.

WebDriver driver = new FirefoxDriver (ffProfile)

Obs: "setAcceptUntrustedCertificates“Och”setAssumeUntrustedCertificateIssuer"finns funktioner för att hantera certifikatfel i webbläsare."

⚠️ Versionsinformation: den profilbaserade koden ovan mål Selenium 2 och Selenium 3. På Selenium 4 en profil är fäst genom FirefoxAlternativ, och Firefox accepterar osäkra certifikat som standard.

SSL-certifikatfelhantering i Chrome

För att hantera SSL-fel i Chrome accepterar DesiredCapabilities-objektet nedan alla SSL-certifikat, så användaren ser ingen certifikatvarning under körningen.

Vi måste skapa en instans av klassen DesiredCapabilities enligt nedan:

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

⚠️ Versionsinformation: CapabilityType.ACCEPT_SSL_CERTS tillhör det gamla JSON Wire-protokollet. Ersätt det med ChromeOptions-kodavsnittet som visades tidigare när det körs. Selenium 4.

SSL-certifikatfelhantering i IE

Till skillnad från att hantera SSL-certifikat i webbläsaren Chrome och Firefox, i IE, kan du behöva hantera det med hjälp av JavaScript.

För att hantera SSL-certifikat i IE kan du hantera den här situationen på två sätt.

Metod 1) Klicka på länken ”Fortsätt till den här webbplatsen (rekommenderas inte)” i mellansidan. Länken har ID:t ”overridelink”, vilket du kan bekräfta i HTML-rutan som öppnas med F12, som skärmdumpen nedan visar.

Varning för Internet Explorer-certifikat med länken "Fortsätt till den här webbplatsen"

Klicka på länken med metoden driver.navigate() med JavaManus enligt nedan: -

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

Metod 2) Den andra metoden är ganska lik Chromes SSL-hanteringskod.

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

Ovanstående kod hjälper till att hantera SSL-certifikatfel i IE.

⚠️ Versionsinformation: Internet Explorer 11 togs ur bruk i juni 2022. Kör samma scenario mot Microsoft Edge med EdgeOptions, eller kör Edge i IE-läge där ett äldre program fortfarande kräver det.

Vanliga frågor

Chromium-projektet körs badssl.com, som hanterar utgångna, självsignerade, återkallade och felaktigt värdbaserade underdomäner. Peka ett testskript på expired.badssl.com för att återskapa ett verkligt certifikatfel på ett säkert sätt.

Nej. Selenium 4 tog bort den till förmån för webbläsarens Options-klasser. Bygg en ChromeOptions, FirefoxOptions- eller EdgeOptions-objektet, anropa setAcceptInsecureCerts(true) och skicka det till drivrutinskonstruktorn.

Skapa ett EdgeOptions-objekt, anropa setAcceptInsecureCerts(true) och skicka det till EdgeDriver-konstruktorn. Mönstret matchar Chrome eftersom båda webbläsarna delar Chromium-motorn.

SafariDriver har ingen brytare för att acceptera osäkra certifieringar. Använd JavascriptExekutorn ska köra CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), vilket rensar mellansidan för endast den sessionen.

ERR_CERT_DATE_INVALID markerar ett utgånget certifikat, ERR_CERT_REVOKED ett återkallat och ERR_CERT_AUTHORITY_INVALID ett självsignerat certifikat eller en opålitlig utfärdare. Koden anger orsaken innan du ändrar något skript.

Maskininlärning grupperar certifikatfel efter felkod och värd, vilket separerar ett utgånget mellanlagringscertifikat från en verklig defekt. Den klustringen förhindrar att ett miljöproblem loggas som många orelaterade testbuggar.

Ja. GitHub Copilot utarbetar Options-objektet och drivrutinskonstruktorn från en kommentar, men kontrollera att den föreslår setAcceptInsecureCerts snarare än det borttagna anropet DesiredCapabilities.

Endast i testmiljöer. Att acceptera alla certifikat döljer defekter i utgångsdatum, värdnamn och kedjefel, så håll flaggan borta från röktester i produktionen och bekräfta certifikatet explicit när säkerheten testas.

Sammanfatta detta inlägg med: