Umgang mit SSL-Zertifikaten in Selenium

⚡ Intelligente Zusammenfassung

SSL-Zertifikatfehler stoppen einen Selenium Testen Sie den Moment, in dem ein Browser ein nicht vertrauenswürdiges oder abgelaufenes Zertifikat ablehnt. Daher benötigt jedes WebDriver-Skript eine browserspezifische Funktion, die das Zertifikat akzeptiert und die Fortsetzung der Automatisierung ermöglicht.

  • 🔘 Definition: SSL verschlüsselt den Datenverkehr zwischen Browser und Server, und das Zertifikat beweist die Identität des Servers.
  • ☑️ Fehlerauslöser: Browser blockieren nicht vertrauenswürdige, abgelaufene, widerrufene oder selbstsignierte Zertifikate und zeigen eine Warnseite an.
  • ✅ Firefox: A Firefox Das Profil setzt die Werte setAcceptUntrustedCertificates und setAssumeUntrustedCertificateIssuer, bevor der Treiber startet.
  • 🧪 . DesiredCapabilities mit ACCEPT_SSL_CERTS akzeptiert das Zertifikat am Selenium 2 und Selenium 3.
  • ️ Internet Explorer: A JavaDurch einen Klick auf das Element „overridelink“ wird die Warnseite übersprungen.
  • ⚠️ Selenium 4: setAcceptInsecureCerts on ChromeOptions, FirefoxOptions oder EdgeOptions ersetzt DesiredCapabilities.

Umgang mit SSL-Zertifikaten in Selenium

SSL-Zertifikat in Selenium

SSL (Secure Sockets Layer) ist ein Standardsicherheitsprotokoll zum Aufbau einer sicheren Verbindung zwischen dem Server und dem Client, bei dem es sich um einen Browser handelt.

Ein SSL-Zertifikat schützt die Datenübertragung zwischen Server und Client-Anwendung durch starke Verschlüsselung und eine digitale Signatur. Der Website-Betreiber installiert entweder ein SSL-Zertifikat oder ein Code-Signatur-Zertifikat.

Vorteile des SSL-Zertifikats

Die Verwendung eines SSL-Zertifikats bietet eine Reihe von Vorteilen, wie zum Beispiel:

  • Man kann das Vertrauen seiner Benutzer und Kunden stärken, um das Wachstum des Unternehmens schnell voranzutreiben
  • Diese Zertifikate tragen dazu bei, Online-Transaktionen und vertrauliche Kundeninformationen wie Kredit-/Debitkartendaten usw. zu schützen.
  • Signierungszertifikate erzielen in der Regel die meisten Downloads und gute Bewertungen von Benutzern.

SSL-gesicherte Websites beginnen mit https:// und Sie können ein Schlosssymbol oder eine grüne Adressleiste sehen, wenn die Verbindung sicher hergestellt ist.

Wenn Sie beispielsweise eine Transaktion über Net Banking abwickeln oder etwas kaufen möchten Mobil Telefonieren Sie über eine E-Commerce-Website wie Flipkart oder Amazon.

Was passiert zwischen dem Webbrowser und dem Server?

  1. Ein Browser versucht, eine Verbindung zu einer mit SSL gesicherten Website herzustellen. Der Browser fordert den Webserver auf, sich zu identifizieren
  2. Der Server sendet dem Browser eine Kopie seines SSL-Zertifikats
  3. Der Browser überprüft, ob das SSL-Zertifikat echt ist. Wenn ja, sendet es eine Nachricht an den Server
  4. Der Server sendet eine digital signierte Bestätigung zurück, um eine SSL-verschlüsselte Sitzung zu starten
  5. Die verschlüsselten Daten werden zwischen dem Server und dem Browser geteilt

Da Kartennummern und Anmeldeinformationen während dieser Sitzung übertragen werden, muss die gesamte Kommunikation durchgängig verschlüsselt bleiben und darf nicht abgefangen werden.

Beispielsweise bestätigen das Schloss-Symbol und die Adressleiste unten, dass das Zertifikat akzeptiert wurde.

  1. Typ https://netbanking.hdfcbank.com/netbanking/ .
  2. Drücken Sie die Eingabetaste.
  3. Im Browser wird wie folgt eine grüne Adressleiste angezeigt: –

Grüne Adressleiste im Browser für eine mit SSL gesicherte HDFC-Onlinebanking-Seite

Wie stellt das SSL-Zertifikat eine sichere Verbindung her?

Das untenstehende Diagramm tracEs ist der Handschlag, und die darauf folgenden nummerierten Schritte erklären jeden einzelnen Austausch.

Diagramm des SSL-Handshakes zwischen einem Webbrowser und einem Webserver

  1. Browser sendet eine HTTPS-Anfrage an den Server.
  2. Jetzt muss der Server dem Browser eine Identifikation bereitstellen, um zu beweisen, dass er vertrauenswürdig ist. Dies kann durch Senden einer Kopie seines SSL-Zertifikats an den Browser erfolgen.
  3. Jeder Browser verfügt über eine eigene Liste vertrauenswürdiger Zertifizierungsstellen. Der Browser vergleicht den Zertifikatsstamm mit seiner Liste vertrauenswürdiger Zertifizierungsstellen und prüft, ob das Zertifikat nicht abgelaufen und nicht widerrufen ist und ob der allgemeine Name für die Website gültig ist, zu der er eine Verbindung herstellt.
  4. Wenn der Browser dem Zertifikat vertraut, wird eine verschlüsselte Sitzung zwischen dem Server und dem Browser erstellt.
  5. Server und Browser können verschlüsselte Nachrichten senden

Arten von SSL-Zertifikaten

Browser und Server verwenden den SSL-Zertifikatmechanismus, um eine sichere Verbindung herstellen zu können. Diese Verbindung beinhaltet die Überprüfung von drei Arten von Zertifikaten.

  • Wurzel
  • Fortgeschrittener
  • Serverzertifikat

Prozess zum Erhalten eines SSL-Zertifikats

Der Prozess zum Erhalten eines SSL-Zertifikats umfasst die folgenden Schritte: –

  1. Zuerst müssen Sie eine CSR-Anfrage (Certificate Signing Request) erstellen.
  2. Bei der CSR-Anfrage wird eine CSR-Datendatei erstellt, die an den Aussteller des SSL-Zertifikats namens CA (Certificate Authority) gesendet wird.
  3. Die Zertifizierungsstelle verwendet die CSR-Datendateien, um ein SSL-Zertifikat für Ihren Server zu erstellen.
  4. Nachdem Sie das SSL-Zertifikat erhalten haben, müssen Sie es auf Ihrem Server installieren.
  5. Außerdem muss ein Zwischenzertifikat installiert werden, das Ihr SSL-Zertifikat mit dem Stammzertifikat der Zertifizierungsstelle verknüpft.

Das Bild unten zeigt alle drei Zertifikate. Stamm-, Zwischen- und Serverzertifikat.

Zertifikatskette mit Darstellung der Root-, Zwischen- und Server-SSL-Zertifikate

So werden SSL-Zertifikate überprüft

SSL funktioniert über eine Kombination aus Programmen und Verschlüsselungs-/Entschlüsselungsroutinen, die auf dem Webserver-Computer und im Webserver-Browser vorhanden sind.

Das SSL-Zertifikat enthält grundsätzlich die folgenden Informationen.

  1. Betreff: die Identität des Website-Eigentümers.
  2. Gültigkeitsinformationen – ein öffentlicher und ein privater Schlüssel.

Der private und der öffentliche Schlüssel sind zwei eindeutig zusammengehörige kryptografische Schlüssel (Zahlen). Alles, was mit einem öffentlichen Schlüssel verschlüsselt wurde, kann nur mit einem privaten Schlüssel entschlüsselt werden. Ein Browser zeigt diese Felder bei der Zertifikatsprüfung an, wie unten dargestellt.

Der Bereich mit den Zertifikatsdetails listet Betreff, Gültigkeitsdauer und öffentlichen Schlüssel auf.

Wenn aufgrund des Zertifikats keine sichere Verbindung zwischen Server und Client hergestellt werden kann, wird der folgende SSL-Zertifikatsfehler angezeigt.

Arten von SSL-Zertifikatfehlern

Angenommen, Sie geben eine HTTPS-Anfrage ein und der Browser antwortet mit „Diese Verbindung ist nicht vertrauenswürdig“ oder „Das Sicherheitszertifikat der Website ist nicht vertrauenswürdig“. Der Browser konnte mit dem vorgelegten Zertifikat keine sichere Verbindung herstellen, bricht den Vorgang ab und fordert den Benutzer auf, entsprechende Maßnahmen zu ergreifen.

Die Arten von Fehlern, die aufgrund des Zertifikats in verschiedenen Browsern wahrscheinlich auftreten, können in etwa wie folgt aussehen

  1. FeuerFox - Diese Verbindung ist nicht vertrauenswürdig
  2. Google Chrome Die Sicherheit dieser Website ist nicht vertrauenswürdig.
  3. Internet Explorer (IE) – Dieses von dieser Website präsentierte Sicherheitszertifikat wurde von einer vertrauenswürdigen Zertifizierungsstelle (CA) nicht als vertrauenswürdig eingestuft.

Der folgende Screenshot zeigt das Interstitial, das ein nicht vertrauenswürdiges Zertifikat erzeugt.

Warnseite für nicht vertrauenswürdige Verbindung, die vom Browser bei einem ungültigen SSL-Zertifikat angezeigt wird

So behandeln Sie SSL-Zertifikatsfehler mit Selenium Webtreiber

Angenommen, die Testskript Die oben genannte Seite „Nicht vertrauenswürdige Verbindung“ wird angezeigt. Das Skript muss so angepasst werden, dass es die SSL-Ausnahme selbstständig und ausschließlich über die Automatisierung.

Die Änderung hängt von der verwendeten Browserinstanz ab, und hier kommen die gewünschten Funktionen ins Spiel. Die gewünschten Funktionen konfigurieren die Treiberinstanz von Selenium Webdriver, einschließlich ChromeDriver, FirefoxDriver und Internet Explorer.

Die folgenden Schritte können hinzugefügt werden Selenium Skript zum Beheben der „Nicht vertrauenswürdige Verbindung“-Situation für jeden Browser.

⚠️ Selenium Anmerkung für 4: Die Klasse DesiredCapabilities wurde entfernt in Selenium 4. Die Browser-Optionsklassen übertragen nun dieselbe Einstellung über eine einzige W3C-Funktion. Inunsichere Zertifikate akzeptieren.

Browser Selenium 4-Klasse Telefon
Chrome ChromeOptions setAcceptInsecureCerts(true)
Firefox FirefoxOptionen setAcceptInsecureCerts(true)
Marktumfeld EdgeOptions setAcceptInsecureCerts(true)
Safari JavascriptTestamentsvollstrecker temporäres Bypass-Skript
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Fehlerbehandlung bei SSL-Zertifikaten in Firefox

Zur Behandlung von SSL-Zertifikatfehlern in Firefox, wir müssen die gewünschten Fähigkeiten nutzen Selenium Webdriver und befolgen Sie die folgenden Schritte.

Schritt 1) Zuerst müssen wir ein neues erstellen. Firefox profile sagen "mein Profil".

Schritt 2) Greifen Sie nun wie unten beschrieben im Skript auf myProfile zu und erstellen Sie das FirefoxProfilobjekt.

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

Schritt 3) Nun müssen wir die Eigenschaften „setAcceptUntrustedCertificates“ und „setAssumeUntrustedCertificateIssuer“ im Fire festlegen. Fox Profil.

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

Schritt 4) Verwenden Sie nun das FeuerFox Profil im FeuerFox Treiberobjekt.

WebDriver driver = new FirefoxDriver (ffProfile)

Hinweis: "setAcceptUntrustedCertificates" und "setAssumeUntrustedCertificateIssuer„sind Fähigkeiten zur Behandlung von Zertifikatsfehlern in Webbrowsern.“

⚠️ Versionshinweis: Der oben genannte profilbasierte Code zielt darauf ab Selenium 2 und Selenium 3. Auf Selenium 4. Ein Profil wird angehängt durch FirefoxOptionen und Firefox Akzeptiert standardmäßig unsichere Zertifikate.

Fehlerbehandlung bei SSL-Zertifikaten in Chrome

Zur Behandlung von SSL-Fehlern in Chrome akzeptiert das unten stehende DesiredCapabilities-Objekt jedes SSL-Zertifikat, sodass der Benutzer während der Ausführung keine Zertifikatswarnung sieht.

Wir müssen eine Instanz der DesiredCapabilities-Klasse wie folgt erstellen:

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

⚠️ Versionshinweis: CapabilityType.ACCEPT_SSL_CERTS gehört zum alten JSON Wire Protocol. Ersetzen Sie es beim Ausführen durch den zuvor gezeigten ChromeOptions-Ausschnitt. Selenium 4.

Fehlerbehandlung bei SSL-Zertifikaten im IE

Im Gegensatz zur Handhabung von SSL-Zertifikaten im Chrome-Browser und FirefoxIm Internet Explorer müssen Sie dies möglicherweise folgendermaßen handhaben: Javascript.

Um SSL-Zertifikate im Internet Explorer zu handhaben, gibt es zwei Möglichkeiten.

Methode 1) Klicken Sie im eingeblendeten Fenster auf den Link „Weiter zu dieser Website (nicht empfohlen)“. Dieser Link trägt die ID „overridelink“, die Sie im mit F12 geöffneten HTML-Bereich überprüfen können, wie der Screenshot unten zeigt.

Internet Explorer-Zertifikatswarnung mit dem Link „Weiter zu dieser Website“ überschreiben

Klicken Sie mit der Methode „driver.navigate()“ auf den Link JavaDas Skript lautet wie folgt:

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

Methode 2) Die zweite Methode ähnelt stark dem SSL-Handling-Code von Chrome.

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

Der obige Code hilft bei der Behandlung von SSL-Zertifikatfehlern im IE.

⚠️ Versionshinweis: Internet Explorer 11 wurde im Juni 2022 eingestellt. Führen Sie dasselbe Szenario durch gegen Microsoft Edge mit EdgeOptions oder Edge im IE-Modus ausführen, wenn eine ältere Anwendung dies noch erfordert.

Häufig gestellte Fragen

Das Chromium-Projekt läuft badssl.comDiese Website dient der Verwaltung abgelaufener, selbstsignierter, widerrufener und falsch gehosteter Subdomains. Um einen realen Zertifikatsfehler sicher zu reproduzieren, kann ein Testskript auf expired.badssl.com ausgeführt werden.

Nein. Selenium 4 entfernte es zugunsten der Browser-Optionsklassen. Erstellen Sie eine ChromeOptions-Klasse. FirefoxOptionen oder EdgeOptions-Objekt, rufen Sie setAcceptInsecureCerts(true) auf und übergeben Sie es dem Treiberkonstruktor.

Erstellen Sie ein EdgeOptions-Objekt, rufen Sie setAcceptInsecureCerts(true) auf und übergeben Sie es dem EdgeDriver-Konstruktor. Dieses Vorgehen entspricht Chrome, da beide Browser die Chromium-Engine verwenden.

SafariDriver hat keine Option zum Akzeptieren unsicherer Zertifikate. Verwenden Sie JavascriptDer Executor führt CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass() aus, wodurch das Interstitial nur für diese Sitzung gelöscht wird.

ERR_CERT_DATE_INVALID kennzeichnet ein abgelaufenes Zertifikat, ERR_CERT_REVOKED ein widerrufenes und ERR_CERT_AUTHORITY_INVALID ein selbstsigniertes Zertifikat oder ein Zertifikat eines nicht vertrauenswürdigen Ausstellers. Der Code gibt die Ursache an, bevor Sie Änderungen am Skript vornehmen.

Maschinelles Lernen gruppiert Zertifikatsfehler nach Fehlercode und Host und unterscheidet so ein abgelaufenes Testzertifikat von einem tatsächlichen Fehler. Diese Gruppierung verhindert, dass ein einzelnes Problem in der Testumgebung als viele unabhängige Testfehler protokolliert wird.

Ja. GitHub-Copilot Erstellt Entwürfe für das Options-Objekt und den Treiberkonstruktor aus einem Kommentar, prüft aber, ob darin setAcceptInsecureCerts anstelle des entfernten DesiredCapabilities-Aufrufs vorgeschlagen wird.

Nur in Testumgebungen. Die Annahme aller Zertifikate verschleiert Ablaufdaten, Hostnamen- und Kettenfehler. Daher sollte diese Option in Produktionsumgebungen nicht verwendet und das Zertifikat explizit geprüft werden, wenn die Sicherheit getestet wird.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: