Hoe u met een SSL-certificaat omgaat Selenium

โšก Slimme samenvatting

SSL-certificaatfouten stoppen een Selenium Test het moment waarop een browser een onbetrouwbaar of verlopen certificaat weigert, dus elk WebDriver-script heeft een browserspecifieke functionaliteit nodig die het certificaat accepteert en de automatisering laat doorgaan.

  • ๐Ÿ”˜ Definitie: SSL versleutelt het verkeer tussen browser en server, en het certificaat bewijst de identiteit van de server.
  • โ˜‘๏ธ Fouttrigger: Browsers blokkeren onbetrouwbare, verlopen, ingetrokken of zelfondertekende certificaten en tonen een waarschuwingspagina.
  • โœ… Firefox: A Firefox Het profiel stelt de parameters setAcceptUntrustedCertificates en setAssumeUntrustedCertificateIssuer in voordat het stuurprogramma start.
  • ๐Ÿงช Chrome: DesiredCapabilities met ACCEPT_SSL_CERTS accepteert het certificaat op Selenium 2 en Selenium 3.
  • ๏ธ Microsoft Edge: A JavaDoor op het overridelink-element te klikken, wordt de waarschuwingspagina overgeslagen.
  • โš ๏ธ Selenium 4: setAcceptInsecureCerts in ChromeOptions, FirefoxOptions of EdgeOptions vervangt DesiredCapabilities.

Hoe u met een SSL-certificaat omgaat Selenium

SSL-certificaat binnen Selenium

SSL (Secure Sockets Layer) is een standaard beveiligingsprotocol voor het tot stand brengen van een veilige verbinding tussen de server en de client, een browser.

Een SSL-certificaat beschermt gegevens die tussen de server en de clientapplicatie worden uitgewisseld met sterke encryptie en een digitale handtekening. De website-eigenaar installeert ofwel een SSL-certificaat ofwel een codeondertekeningscertificaat.

Voordelen van SSL-certificaat

Er zijn een aantal voordelen verbonden aan het gebruik van een SSL-certificaat, zoals:

  • Men kan het vertrouwen van hun gebruikers en klanten vergroten om de groei van het bedrijf snel te vergroten
  • Deze certificaten helpen bij het beveiligen van online transacties en gevoelige informatie van klanten, zoals creditcard-/debetkaartgegevens, enz.
  • Het ondertekenen van een certificaat krijgt doorgaans een maximaal aantal downloads en goede recensies van gebruikers.

SSL-beveiligde websites beginnen met https:// en u ziet een slotpictogram of een groene adresbalk als de verbinding veilig tot stand is gebracht.

Als u bijvoorbeeld een transactie via internetbankieren wilt doen of een Mobile telefoon via e-commercesite zoals Flipkart of Amazon.

Wat gebeurt er tussen de webbrowser en de server

  1. Een browser probeert verbinding te maken met een website die is beveiligd met SSL. De browser vraagt โ€‹โ€‹de webserver om zichzelf te identificeren
  2. De server stuurt de browser een kopie van zijn SSL-certificaat
  3. De browser verifieert of het SSL-certificaat echt is. Als dat zo is, stuurt het een bericht naar de server
  4. De server stuurt een digitaal ondertekende bevestiging terug om een โ€‹โ€‹SSL-gecodeerde sessie te starten
  5. De gecodeerde gegevens worden gedeeld tussen de server en de browser

Kaartnummers en inloggegevens worden tijdens die sessie verzonden, dus de uitwisseling moet van begin tot eind versleuteld blijven en mag niet worden onderschept.

Het hangslotje en de adresbalk hieronder bevestigen bijvoorbeeld dat het certificaat is geaccepteerd.

  1. Type https://netbanking.hdfcbank.com/netbanking/ .
  2. Druk op Enter.
  3. U ziet een groene adresbalk in de browser, zoals hieronder: -

Groene adresbalk in de browser voor een HDFC internetbankierpagina die beveiligd is met SSL.

Hoe zorgt het SSL-certificaat voor een veilige verbinding?

Het onderstaande diagram tracDe handdruk wordt beschreven, en de genummerde stappen die volgen, leggen elke uitwisseling uit.

Diagram van de SSL-handshake tussen een webbrowser en een webserver.

  1. browser verzendt een HTTPS-verzoek naar de server.
  2. Nu moet de server een identificatie aan de browser verstrekken om te bewijzen dat deze wordt vertrouwd. Dit kan gedaan worden door een kopie van het SSL-certificaat naar de browser te sturen.
  3. Elke browser heeft zijn eigen lijst met vertrouwde CA's. De browser controleert de certificaatroot aan de hand van de lijst met vertrouwde CA's en controleert of het certificaat niet is verlopen, niet is ingetrokken en of de algemene naam geldig is voor de website waarmee het verbinding maakt.
  4. Als de browser het certificaat vertrouwt, wordt er een gecodeerde sessie tot stand gebracht tussen de server en de browser.
  5. Server en browser kunnen gecodeerde berichten verzenden

Typen SSL-certificaten

Browser en de server gebruiken het SSL-certificaatmechanisme om een โ€‹โ€‹veilige verbinding tot stand te kunnen brengen. Deze verbinding omvat de verificatie van drie soorten certificaten.

  • Root
  • Gemiddeld
  • Servercertificaat

Proces voor het verkrijgen van een SSL-certificaat

Het proces voor het verkrijgen van een SSL-certificaat omvat de onderstaande stappen: -

  1. Eerst moet u een CSR-verzoek (create a Certificate Signing Request) aanmaken.
  2. CSR-verzoek creรซert een CSR-gegevensbestand, dat wordt verzonden naar de uitgever van het SSL-certificaat, bekend als CA (Certificate Authority).
  3. De CA gebruikt de CSR-gegevensbestanden om een โ€‹โ€‹SSL-certificaat voor uw server te maken.
  4. Nadat u het SSL-certificaat heeft ontvangen, moet u het op uw server installeren.
  5. Er moet ook een tussencertificaat worden geรฏnstalleerd dat uw SSL-certificaat koppelt aan het basiscertificaat van CA.

De onderstaande afbeelding vertegenwoordigt alle drie de certificaten Root-, tussen- en servercertificaat.

Certificaatketen met de root-, tussenliggende en server-SSL-certificaten.

Hoe SSL-certificaten worden geverifieerd

SSL werkt via een combinatie van programma's en coderings-/decoderingsroutine die op de webservercomputer en de webserverbrowser aanwezig zijn.

SSL-certificaat bevat in principe onderstaande informatie.

  1. Onderwerp dat de identiteit van de website-eigenaar is.
  2. Geldigheidsinformatie: een publieke en een private sleutel.

De privรฉsleutel en de publieke sleutel zijn twee uniek aan elkaar gerelateerde cryptografische sleutels (getallen). Alles wat met een publieke sleutel is versleuteld, kan alleen met een privรฉsleutel worden ontsleuteld. Een browser toont deze velden wanneer het certificaat wordt gecontroleerd, zoals hieronder.

In het paneel met certificaatgegevens worden het onderwerp, de geldigheidsperiode en de openbare sleutel weergegeven.

Wanneer er vanwege het certificaat geen beveiligde verbinding tot stand kan worden gebracht tussen de server en de client, wordt de volgende SSL-certificaatfout weergegeven.

Soorten SSL-certificaatfouten

Stel dat u een HTTPS-verzoek typt en de browser antwoordt met 'Deze verbinding is niet vertrouwd' of 'Het beveiligingscertificaat van de site wordt niet vertrouwd'. De browser kon geen beveiligde verbinding tot stand brengen met het gepresenteerde certificaat, dus stopt deze en vraagt โ€‹โ€‹de gebruiker om passende actie te ondernemen.

De soorten fouten die u waarschijnlijk tegenkomt als gevolg van certificaten in verschillende browsers kunnen ongeveer als volgt zijn

  1. BrandFox - Deze verbinding is niet vertrouwd
  2. Google Chrome De beveiliging van deze site is niet betrouwbaar.
  3. Internet Explorer (IE) โ€“ Dit beveiligingscertificaat dat door deze website wordt gepresenteerd, werd niet vertrouwd door een vertrouwde certificeringsinstantie (CA)

De onderstaande schermafbeelding laat zien wat er tussen de regels staat wanneer een niet-vertrouwd certificaat wordt gebruikt.

Een browser toont een waarschuwingspagina voor een onbetrouwbare verbinding vanwege een ongeldig SSL-certificaat.

Hoe om te gaan met SSL-certificaatfouten met behulp van Selenium Webstuurprogramma

Stel dat het testscript Dit leidt naar de pagina 'Onbetrouwbare verbinding' hierboven. Het script moet worden aangepast zodat het de SSL-uitzondering zelf afhandelt, puur via SSL. automatisering.

De wijziging is afhankelijk van de gebruikte browserinstantie, en dit is waar gewenste mogelijkheden (Desired Capabilities) in beeld komen. Gewenste mogelijkheden (Desired Capabilities) configureren de driverinstantie van Selenium Webdriver, inclusief ChromeDriver, FirefoxDriver en Internet Explorer.

De onderstaande stappen kunnen worden toegevoegd aan een Selenium Script om de melding "Onbetrouwbare verbinding" voor elke browser op te lossen.

โš ๏ธ Selenium Opmerking voor 4: De klasse DesiredCapabilities werd verwijderd in Selenium 4. De browseroptiesklassen dragen nu dezelfde instelling over via รฉรฉn enkele W3C-functionaliteit. acceptInsecureCerts.

browser Selenium 4 les Bel
Chroom ChromeOpties setAcceptInsecureCerts(true)
Firefox Firefoxopties setAcceptInsecureCerts(true)
rand Randopties setAcceptInsecureCerts(true)
Safari Javascriptexecuteur tijdelijk omzeilingsscript
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Foutverwerking SSL-certificaat Firefox

Voor het afhandelen van SSL-certificaatfouten in Firefox, moeten we de gewenste mogelijkheden van gebruiken Selenium Webdriver en volg de volgende stappen.

Stap 1) Eerst moeten we een nieuwe aanmaken. Firefox profielen zeggen "mijn profiel'.

Stap 2) Ga nu naar myProfile in het onderstaande script en maak het FirefoxProfielobject.

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

Stap 3) Nu moeten we de eigenschappen "setAcceptUntrustedCertificates" en "setAssumeUntrustedCertificateIssuer" instellen in Fire. Fox profiel.

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

Stap 4) Gebruik nu het vuurFox profiel in het vuurFox bestuurder-object.

WebDriver driver = new FirefoxDriver (ffProfile)

Let op: "setAcceptUntrustedCertificates" en "setAssumeUntrustedCertificateIssuerโ€œDit zijn mogelijkheden om certificaatfouten in webbrowsers af te handelen.

โš ๏ธ Versie-opmerking: De bovenstaande profielgebaseerde code is gericht op Selenium 2 en Selenium 3. Op Selenium 4. Een profiel is gekoppeld via FirefoxOpties, en Firefox Accepteert standaard onveilige certificaten.

SSL-certificaatfoutafhandeling in Chrome

Om SSL-fouten in Chrome af te handelen, accepteert het onderstaande DesiredCapabilities-object elk SSL-certificaat, zodat de gebruiker tijdens het uitvoeren geen certificaatwaarschuwing te zien krijgt.

We moeten een exemplaar van de klasse DesiredCapabilities maken, zoals hieronder: -

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

โš ๏ธ Versie-opmerking: CapabilityType.ACCEPT_SSL_CERTS behoort tot het oude JSON Wire Protocol. Vervang dit door het eerder getoonde ChromeOptions-fragment wanneer u het uitvoert. Selenium 4.

SSL-certificaatfoutafhandeling in IE

In tegenstelling tot het verwerken van SSL-certificaten in de Chrome-browser en FirefoxIn Internet Explorer moet je dit mogelijk op een andere manier afhandelen. javascript.

Om een โ€‹โ€‹SSL-certificaat in Internet Explorer te beheren, zijn er twee manieren.

Methode 1) Klik op de link 'Doorgaan naar deze website (niet aanbevolen)' in de tussenpagina. Deze link heeft de ID 'overridelink', wat u kunt controleren in het HTML-venster dat u opent met F12, zoals de onderstaande schermafbeelding laat zien.

Internet Explorer-certificaatwaarschuwing met de optie 'Doorgaan naar deze website' die dit negeert.

Klik op de link met behulp van de driver.navigate()-methode met JavaHet script ziet er als volgt uit:

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

Methode 2) De tweede methode lijkt sterk op de code voor SSL-afhandeling in Chrome.

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

De bovenstaande code helpt bij het afhandelen van SSL-certificaatfouten in IE.

โš ๏ธ Versie-opmerking: Internet Explorer 11 is in juni 2022 uitgefaseerd. Voer hetzelfde scenario uit tegen Microsoft Edge met EdgeOptions, of start Edge in IE-modus wanneer een oudere toepassing dit nog vereist.

Veelgestelde vragen

Het Chromium-project draait badssl.comDeze server bedient verlopen, zelfondertekende, ingetrokken en onjuist gehoste subdomeinen. Richt een testscript op expired.badssl.com om een โ€‹โ€‹echte certificaatfout veilig te reproduceren.

Nee. Selenium 4 heeft het verwijderd ten gunste van de browseroptiesklassen. Bouw een ChromeOptions, FirefoxAls je een Options- of EdgeOptions-object hebt, roep dan setAcceptInsecureCerts(true) aan en geef dit door aan de constructor van de driver.

Maak een EdgeOptions-object aan, roep setAcceptInsecureCerts(true) aan en geef dit door aan de EdgeDriver-constructor. Het patroon komt overeen met Chrome omdat beide browsers de Chromium-engine delen.

SafariDriver heeft geen optie om onveilige certificaten te accepteren. Gebruik JavascriptDe executor voert CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass() uit, waardoor de tussenpagina alleen voor die sessie wordt gewist.

ERR_CERT_DATE_INVALID duidt op een verlopen certificaat, ERR_CERT_REVOKED op een ingetrokken certificaat en ERR_CERT_AUTHORITY_INVALID op een zelfondertekend certificaat of een certificaat van een niet-vertrouwde uitgever. De code geeft de oorzaak aan voordat u scripts wijzigt.

Machine learning groepeert certificaatfouten op basis van foutcode en host, waardoor een verlopen testcertificaat wordt onderscheiden van een echt defect. Deze clustering voorkomt dat een probleem in รฉรฉn omgeving als meerdere ongerelateerde testfouten wordt geregistreerd.

Ja. GitHub-copiloot De code genereert het Options-object en de driverconstructor op basis van een opmerking, maar controleer of daarin setAcceptInsecureCerts wordt voorgesteld in plaats van de verwijderde DesiredCapabilities-aanroep.

Alleen in testomgevingen. Het accepteren van alle certificaten verbergt vervaldatum-, hostnaam- en certificaatketenfouten. Houd deze vlag daarom buiten productietests en controleer het certificaat expliciet wanneer de beveiliging wordt getest.

Vat dit bericht samen met: