Comment gérer le certificat SSL dans Selenium

⚡ Résumé intelligent

Les erreurs de certificat SSL empêchent un Selenium Il faut tester dès qu'un navigateur refuse un certificat non approuvé ou expiré ; chaque script WebDriver a donc besoin d'une fonctionnalité spécifique au navigateur qui accepte le certificat et permet à l'automatisation de se poursuivre.

  • (I.e. Définition: Le protocole SSL chiffre le trafic entre le navigateur et le serveur, et le certificat prouve l'identité du serveur.
  • ☑️ Déclencheur d'erreur : Les navigateurs bloquent les certificats non fiables, expirés, révoqués ou auto-signés et affichent une page d'avertissement.
  • Firefox: A Firefox Le profil définit setAcceptUntrustedCertificates et setAssumeUntrustedCertificateIssuer avant le démarrage du pilote.
  • 🧪 Chrome: DesiredCapabilities avec ACCEPT_SSL_CERTS accepte le certificat sur Selenium 2 et Selenium 3.
  • Internet Explorer: A JavaUn clic sur l'élément overridelink permet de passer outre la page d'avertissement.
  • ⚠️ Selenium 4: définirAccepter les certificats non sécurisés sur ChromeOptions, FirefoxOptions ou EdgeOptions remplace DesiredCapabilities.

Comment gérer le certificat SSL dans Selenium

Certificat SSL dans Selenium

SSL (Secure Sockets Layer) est un protocole de sécurité standard permettant d'établir une connexion sécurisée entre le serveur et le client qui est un navigateur.

Un certificat SSL protège les données transitant entre le serveur et l'application cliente grâce à un chiffrement robuste et une signature numérique. Le propriétaire du site installe soit un certificat SSL, soit un certificat de signature de code.

Avantages du certificat SSL

L'utilisation d'un certificat SSL présente de nombreux avantages, tels que :

  • On peut accroître la confiance de ses utilisateurs et de ses clients afin d'améliorer rapidement la croissance de l'entreprise.
  • Ces certificats aident à sécuriser les transactions en ligne et les informations sensibles des clients telles que les données de carte de crédit/débit, etc.
  • Le certificat de signature a tendance à obtenir un nombre maximum de téléchargements et de bonnes critiques de la part des utilisateurs.

Les sites Web sécurisés par SSL commencent par https:// et vous pouvez voir une icône de verrou ou une barre d'adresse verte si la connexion est établie en toute sécurité.

Par exemple, si vous souhaitez effectuer une transaction via Net Banking ou acheter un Mobile téléphone via un site de commerce électronique tel que Flipkart ou Amazon.

Que se passe-t-il entre le navigateur Web et le serveur

  1. Un navigateur tente de se connecter à un site Web sécurisé avec SSL. Le navigateur demande au serveur Web de s'identifier
  2. Le serveur envoie au navigateur une copie de son certificat SSL
  3. Le navigateur vérifie si le certificat SSL est authentique. Si c'est le cas, il envoie un message au serveur
  4. Le serveur renvoie un accusé de réception signé numériquement pour démarrer une session cryptée SSL
  5. Les données cryptées sont partagées entre le serveur et le navigateur

Les numéros de carte et les identifiants de connexion transitent au cours de cette session ; l’échange doit donc rester chiffré de bout en bout et ne peut être intercepté.

Par exemple, le cadenas et la barre d'adresse ci-dessous confirment que le certificat a été accepté.

  1. Type https://netbanking.hdfcbank.com/netbanking/ .
  2. Appuyez sur Entrée.
  3. Vous verrez une barre d'adresse verte dans le navigateur comme ci-dessous : -

Barre d'adresse verte dans le navigateur pour une page de banque en ligne HDFC sécurisée par SSL

Comment le certificat SSL crée-t-il une connexion sécurisée

Le diagramme ci-dessous trac« la poignée de main », et les étapes numérotées qui suivent expliquent chaque échange.

Schéma de l'établissement d'une liaison SSL entre un navigateur web et un serveur web

  1. Navigateur envoie une requête HTTPS au serveur.
  2. Le serveur doit désormais fournir une certaine identification au navigateur pour prouver qu'il est fiable. Cela peut être fait en envoyant une copie de son certificat SSL au navigateur.
  3. Chaque navigateur possède sa propre liste d'autorités de certification de confiance. Le navigateur vérifie la racine du certificat par rapport à sa liste d'autorités de certification de confiance et s'assure que le certificat n'est pas expiré, n'est pas révoqué et que le nom commun est valide pour le site Web auquel il se connecte.
  4. Si le navigateur fait confiance au certificat, une session cryptée est créée entre le serveur et le navigateur.
  5. Le serveur et le navigateur peuvent envoyer des messages cryptés

Types de certificats SSL

Le navigateur et le serveur utilisent le mécanisme de certificat SSL pour pouvoir établir une connexion sécurisée. Cette connexion implique la vérification de trois types de certificats.

  • Traitement
  • Intermédiaire
  • Certificat de serveur

Processus d'obtention du certificat SSL

Le processus d'obtention du certificat SSL comprend les étapes ci-dessous : -

  1. Tout d’abord, vous devez créer une demande CSR (créer une demande de signature de certificat).
  2. La demande CSR crée un fichier de données CSR, qui est envoyé à l'émetteur du certificat SSL appelé CA (Certificate Authority).
  3. L'autorité de certification utilise les fichiers de données CSR pour créer un certificat SSL pour votre serveur.
  4. Après avoir reçu le certificat SSL, vous devez l'installer sur votre serveur.
  5. Un certificat intermédiaire doit également être installé pour lier votre certificat SSL au certificat racine de l'autorité de certification.

L'image ci-dessous représente les trois certificats. Certificat racine, intermédiaire et serveur.

Chaîne de certificats montrant les certificats SSL racine, intermédiaires et serveur

Comment les certificats SSL sont vérifiés

SSL fonctionne grâce à une combinaison de programmes et de routines de cryptage/déchiffrement qui existent sur l'ordinateur du serveur Web et le navigateur du serveur Web.

Le certificat SSL contient essentiellement les informations ci-dessous.

  1. Sujet qui est l'identité du propriétaire du site.
  2. Informations de validité - une clé publique et une clé privée.

La clé privée et la clé publique sont deux clés cryptographiques (nombres) liées de manière unique. Tout ce qui est chiffré avec une clé publique ne peut être déchiffré qu'avec une clé privée. Un navigateur affiche ces champs lors de la consultation du certificat, comme ci-dessous.

Panneau de détails du certificat affichant le sujet, la période de validité et la clé publique

Lorsqu'une connexion sécurisée n'est pas établie entre le serveur et le client en raison du certificat, l'erreur de certificat SSL suivante se manifestera.

Types d'erreur de certificat SSL

Supposons que vous saisissiez une requête HTTPS et que le navigateur réponde par « Cette connexion n'est pas sécurisée » ou « Le certificat de sécurité du site n'est pas approuvé ». Le navigateur n'a pas pu établir de connexion sécurisée avec le certificat présenté ; il s'interrompt donc et invite l'utilisateur à prendre les mesures nécessaires.

Les types d'erreurs que vous êtes susceptible de voir en raison du certificat dans différents navigateurs peuvent ressembler à ceci

  1. IncendieFox – Cette connexion n’est pas fiable
  2. Google Chrome – La sécurité de ce site n'est pas fiable.
  3. Internet Explorer (IE) – Ce certificat de sécurité présenté par ce site Web n'a pas été approuvé par une autorité de certification (CA) de confiance

La capture d'écran ci-dessous montre l'espace interstitiel généré par un certificat non approuvé.

Page d'avertissement de connexion non sécurisée affichée par un navigateur en raison d'un certificat SSL invalide

Comment gérer l'erreur de certificat SSL à l'aide Selenium Pilote Web

Supposons que le script de test L'utilisateur accède à la page « Connexion non sécurisée » ci-dessus. Le script doit être modifié afin qu'il gère lui-même l'exception SSL, uniquement par le biais de l'automatisation.

La modification dépend de l'instance du navigateur utilisée, et c'est là qu'interviennent les capacités souhaitées. Les capacités souhaitées configurent l'instance du pilote de Selenium Webdriver, y compris ChromeDriver, FirefoxPilote et Internet Explorer.

Les étapes ci-dessous peuvent être ajoutées à un Selenium Script permettant de résoudre le problème de « connexion non sécurisée » pour chaque navigateur.

⚠️ Selenium Note de 4 : La classe DesiredCapabilities a été supprimée dans Selenium 4. Les classes Options du navigateur véhiculent désormais le même paramètre grâce à une fonctionnalité unique du W3C. accepter les certificats non sécurisés.

Navigateur Selenium classe 4 Appeler
Chrome Options de Chrome définirAccepterLesCertificatsNonSécurisés(true)
Firefox FirefoxOptions définirAccepterLesCertificatsNonSécurisés(true)
Options Edge définirAccepterLesCertificatsNonSécurisés(true)
Safari JavascriptExécuteur script de contournement temporaire
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Gestion des erreurs de certificat SSL dans Firefox

Pour gérer l'erreur de certificat SSL dans Firefox, nous devons utiliser les capacités souhaitées de Selenium Webdriver et suivez les étapes suivantes.

Étape 1) Nous devons d'abord créer un nouveau Firefox profil dire "mon profil" .

Étape 2) Accédez maintenant à myProfile dans le script comme ci-dessous et créez le FirefoxObjet de profil.

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

Étape 3) Nous devons maintenant définir les propriétés « setAcceptUntrustedCertificates » et « setAssumeUntrustedCertificateIssuer » dans Fire Fox profil.

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

Étape 4) Utilisez maintenant le feuFox profil dans le feuFox objet pilote.

WebDriver driver = new FirefoxDriver (ffProfile)

À noter: "setAcceptUntrustedCertificates" et "setAssumeUntrustedCertificateIssuer« Ce sont des fonctionnalités permettant de gérer les erreurs de certificat dans les navigateurs Web. »

⚠️ Note de version : le code basé sur le profil ci-dessus cible Selenium 2 et Selenium 3. Sur Selenium 4 Un profil est associé via FirefoxOptions, et Firefox Accepte par défaut les certificats non sécurisés.

Gestion des erreurs de certificat SSL dans Chrome

Pour gérer les erreurs SSL dans Chrome, l'objet DesiredCapabilities ci-dessous accepte tous les certificats SSL, de sorte que l'utilisateur ne voit aucun avertissement de certificat pendant l'exécution.

Nous devons créer une instance de la classe DesiredCapabilities comme ci-dessous : -

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

⚠️ Note de version : CapabilityType.ACCEPT_SSL_CERTS appartient à l'ancien protocole JSON Wire. Remplacez-le par l'extrait de code ChromeOptions présenté précédemment lors de l'exécution. Selenium 4.

Gestion des erreurs de certificat SSL dans IE

Contrairement à la gestion des certificats SSL dans le navigateur Chrome et FirefoxDans Internet Explorer, vous devrez peut-être gérer cela en utilisant javascript.

Pour gérer les certificats SSL dans IE, vous pouvez procéder de deux manières.

Méthode 1) Cliquez sur le lien « Continuer vers ce site Web (non recommandé) » dans la fenêtre intermédiaire. Ce lien possède l’identifiant « overridelink », que vous pouvez vérifier dans le volet HTML ouvert avec F12, comme le montre la capture d’écran ci-dessous.

Avertissement relatif au certificat d'Internet Explorer avec le lien « Continuer vers ce site Web »

Cliquez sur le lien en utilisant la méthode driver.navigate() avec JavaScript comme ci-dessous :

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

Méthode 2) La seconde méthode est assez similaire au code de gestion SSL de Chrome.

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

Le code ci-dessus aidera à gérer l'erreur de certificat SSL dans IE.

⚠️ Note de version : Internet Explorer 11 a été retiré du service en juin 2022. Exécutez le même scénario contre Microsoft Edge avec EdgeOptions, ou activez Edge en mode IE lorsqu'une application ancienne le requiert encore.

FAQ

Le projet Chromium fonctionne badssl.comCe site héberge des sous-domaines expirés, auto-signés, révoqués et hébergés sur un hôte incorrect. Pour reproduire une défaillance de certificat réelle en toute sécurité, exécutez un script de test sur expired.badssl.com.

Non. Selenium La version 4 l'a supprimée au profit des classes Options du navigateur. Créez un ChromeOptions. FirefoxObjet Options ou EdgeOptions, appelez setAcceptInsecureCerts(true) et transmettez-le au constructeur du pilote.

Créez un objet EdgeOptions, appelez la méthode setAcceptInsecureCerts(true) et transmettez-le au constructeur EdgeDriver. Ce comportement est identique à celui de Chrome, car les deux navigateurs utilisent le moteur Chromium.

SafariDriver ne possède pas d'option accept-insecure-certs. Utilisez JavascriptExécuteur pour exécuter CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), qui efface l'interstitiel pour cette session uniquement.

L'erreur ERR_CERT_DATE_INVALID signale un certificat expiré, ERR_CERT_REVOKED un certificat révoqué et ERR_CERT_AUTHORITY_INVALID un certificat auto-signé ou provenant d'un émetteur non approuvé. Le code d'erreur indique la cause du problème avant toute modification du script.

L'apprentissage automatique regroupe les échecs de certificats par code d'erreur et par hôte, ce qui permet de distinguer un certificat de test expiré d'un véritable défaut. Ce regroupement évite qu'un problème d'environnement ne soit consigné comme plusieurs bogues de test sans lien entre eux.

Oui. Copilote GitHub rédige l'objet Options et le constructeur du pilote à partir d'un commentaire, mais vérifie qu'il suggère setAcceptInsecureCerts plutôt que l'appel supprimé DesiredCapabilities.

Uniquement en environnement de test. Accepter tous les certificats masque les défauts d'expiration, de nom d'hôte et de chaîne ; évitez donc cette option lors des tests de sécurité en production et exigez explicitement la vérification du certificat lors des tests de sécurité.

Résumez cet article avec :