Cómo manejar el certificado SSL en Selenium

⚡ Resumen inteligente

Los errores del certificado SSL detienen un Selenium Es necesario comprobar en qué momento un navegador rechaza un certificado no fiable o caducado, por lo que cada script de WebDriver necesita una funcionalidad específica del navegador que acepte el certificado y permita que la automatización continúe.

  • 🔘 Definición: SSL cifra el tráfico entre el navegador y el servidor, y el certificado demuestra la identidad del servidor.
  • ☑️ Disparador de error: Los navegadores bloquean los certificados no confiables, caducados, revocados o autofirmados y muestran una página de advertencia.
  • Firefox: A Firefox El perfil establece setAcceptUntrustedCertificates y setAssumeUntrustedCertificateIssuer antes de que se inicie el controlador.
  • 🧪 cromo: DesiredCapabilities con ACCEPT_SSL_CERTS acepta el certificado en Selenium 2 y Selenium 3.
  • 🛠️ Internet Explorer: A JavaAl hacer clic en el elemento overridelink mediante el script, se omite la página de advertencia.
  • ⚠️ Selenium 4: establecerAcceptInsecureCerts en ChromeOptions, FirefoxOptions o EdgeOptions reemplaza a DesiredCapabilities.

Cómo manejar el certificado SSL en Selenium

Certificado SSL en Selenium

SSL (Secure Sockets Layer) es un protocolo de seguridad estándar para establecer una conexión segura entre el servidor y el cliente, que es un navegador.

Un certificado SSL protege los datos que se transmiten entre el servidor y la aplicación cliente mediante un cifrado robusto y una firma digital. El propietario del sitio web instala un certificado SSL o un certificado de firma de código.

Beneficios del certificado SSL

Hay varios beneficios de usar un certificado SSL como,

  • Se puede aumentar la confianza de sus usuarios y clientes para mejorar rápidamente el crecimiento del negocio.
  • Estos certificados ayudan a proteger las transacciones en línea y la información confidencial de los clientes, como datos de tarjetas de crédito/débito, etc.
  • El certificado de firma tiende a obtener un número máximo de descargas y buenas críticas por parte de los usuarios.

Los sitios web protegidos por SSL comienzan con https:// y podrá ver un icono de candado o una barra de direcciones verde si la conexión está establecida de forma segura.

Por ejemplo, si desea realizar alguna transacción a través de banca neta o desea comprar un Móvil teléfono a través de un sitio de comercio electrónico como Flipkart o Amazon.

¿Qué sucede entre el navegador web y el servidor?

  1. Un navegador intenta conectarse con un sitio web protegido con SSL. El navegador solicita al servidor web que se identifique
  2. El servidor envía al navegador una copia de su certificado SSL
  3. El navegador verifica si el certificado SSL es genuino. Si es así envía un mensaje al servidor.
  4. El servidor devuelve un acuse de recibo firmado digitalmente para iniciar una sesión cifrada SSL
  5. Los datos cifrados se comparten entre el servidor y el navegador.

Los números de tarjeta y las credenciales de inicio de sesión se transmiten durante esa sesión, por lo que el intercambio debe permanecer cifrado de extremo a extremo y no puede ser interceptado.

Por ejemplo, el candado y la barra de direcciones que aparecen a continuación confirman que el certificado fue aceptado.

  1. Tipo https://netbanking.hdfcbank.com/netbanking/ .
  2. Pulse Enter.
  3. Verá una barra de direcciones verde en el navegador como se muestra a continuación: –

Barra de direcciones verde en el navegador para una página de banca en línea de HDFC protegida con SSL.

¿Cómo crea el certificado SSL una conexión segura?

El diagrama a continuación tracEl apretón de manos y los pasos numerados que siguen explican cada intercambio.

Diagrama del protocolo de enlace SSL entre un navegador web y un servidor web.

  1. Navegador envía una solicitud HTTPS al servidor.
  2. Ahora el servidor debe proporcionar alguna identificación al navegador para demostrar que es confiable. Esto se puede hacer enviando una copia de su certificado SSL al navegador.
  3. Cada navegador tiene su propia lista de CA de confianza. El navegador verifica la raíz del certificado con su lista de CA confiables y que el certificado no esté vencido, no esté revocado y que el nombre común sea válido para el sitio web al que se está conectando.
  4. Si el navegador confía en el certificado, se crea una sesión cifrada entre el servidor y el navegador.
  5. El servidor y el navegador pueden enviar mensajes cifrados

Tipos de certificados SSL

El navegador y el servidor utilizan el mecanismo de certificado SSL para poder establecer una conexión segura. Esta conexión implica la verificación de tres tipos de certificados.

  • root
  • Intermedio
  • Certificado de servidor

Proceso de obtención del certificado SSL

El proceso de obtención del certificado SSL incluye los siguientes pasos: –

  1. Primero, debe crear una solicitud CSR (crear una solicitud de firma de certificado).
  2. La solicitud CSR crea un archivo de datos CSR, que se envía al emisor del certificado SSL conocido como CA (Autoridad certificadora).
  3. La CA utiliza los archivos de datos CSR para crear un certificado SSL para su servidor.
  4. Después de recibir el certificado SSL, debe instalarlo en su servidor.
  5. También es necesario instalar un certificado intermedio que vincule su certificado SSL con el certificado raíz de CA.

La siguiente imagen representa los tres certificados. Certificado raíz, intermedio y de servidor.

Cadena de certificados que muestra los certificados SSL raíz, intermedio y de servidor.

Cómo se verifican los certificados SSL

SSL funciona a través de una combinación de programas y rutinas de cifrado/descifrado que existen en la computadora del servidor web y en el navegador del servidor web.

El certificado SSL básicamente contiene la siguiente información.

  1. Asunto que es la identidad del titular del sitio web.
  2. Información de validez: una clave pública y una privada.

La clave privada y la clave pública son dos claves criptográficas (números) relacionadas de forma única. Todo lo que se cifra con una clave pública solo puede descifrarse con una clave privada. Un navegador muestra estos campos al inspeccionar el certificado, como se muestra a continuación.

Panel de detalles del certificado que muestra el sujeto, el período de validez y la clave pública.

Cuando no se establece una conexión segura entre el servidor y el cliente debido al certificado, se manifestará el siguiente error de certificado SSL.

Tipos de error de certificado SSL

Supongamos que introduces una solicitud HTTPS y el navegador responde con el mensaje "Esta conexión no es segura" o "El certificado de seguridad del sitio no es de confianza". El navegador no pudo establecer una conexión segura con el certificado presentado, por lo que se detiene y solicita al usuario que realice las acciones pertinentes.

Los tipos de errores que probablemente verá debido al certificado en diferentes navegadores pueden ser algo así como esto

  1. IncendióFox – Esta conexión no es de confianza
  2. Google Chrome – No se confía en la seguridad de este sitio.
  3. Internet Explorer (IE) – Este certificado de seguridad presentado por este sitio web no fue confiado por una autoridad certificadora (CA) confiable

La captura de pantalla que aparece a continuación muestra el mensaje intersticial que produce un certificado no confiable.

Página de advertencia de conexión no segura que muestra el navegador debido a un certificado SSL no válido.

Cómo manejar el error del certificado SSL usando Selenium controlador web

Supongamos que script de prueba llega a la página "Conexión no segura" mencionada anteriormente. El script debe ajustarse para que se encargue de la excepción SSL por sí mismo, simplemente a través de la automatización.

El cambio depende de la instancia del navegador en uso, y aquí es donde entran en juego las capacidades deseadas. Las capacidades deseadas configuran la instancia del controlador de Selenium Webdriver, incluyendo ChromeDriver, FirefoxControlador e Internet Explorer.

Los pasos que se indican a continuación se pueden añadir a un Selenium Script para solucionar el problema de "Conexión no segura" en cada navegador.

⚠️ Selenium Nota 4: La clase DesiredCapabilities fue eliminada en Selenium 4. Las clases de opciones del navegador ahora llevan la misma configuración a través de una única capacidad W3C, aceptar certificados inseguros.

Navegador Selenium clase 4 Llame hoy al
Chrome Opciones de Chrome setAcceptInsecureCerts(true)
Firefox FirefoxOpciones setAcceptInsecureCerts(true)
Edge Opciones de borde setAcceptInsecureCerts(true)
Safari JavascriptEjecutor script de derivación temporal
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

Manejo de errores de certificado SSL en Firefox

Para manejar el error del certificado SSL en Firefox, necesitamos utilizar las capacidades deseadas de Selenium Webdriver y siga los siguientes pasos.

Paso 1) Primero necesitamos crear uno nuevo Firefox perfiles decir "mi perfil".

Paso 2) Ahora acceda a myProfile en el script como se muestra a continuación y cree el FirefoxObjeto de perfil.

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

Paso 3) Ahora necesitamos configurar las propiedades “setAcceptUntrustedCertificates” y “setAssumeUntrustedCertificateIssuer” en Fire. Fox perfil.

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

Paso 4) Ahora usa el fuegoFox Perfil en el fuegoFox objeto conductor.

WebDriver driver = new FirefoxDriver (ffProfile)

Nota: "setAceptar certificados no confiables" y "setAssumeUntrustedCertificateIssuer“son capacidades para manejar los errores de certificado en los navegadores web.

⚠️ Nota de versión: El código basado en perfiles mencionado anteriormente apunta a Selenium 2 y Selenium 3. En Selenium 4. Se adjunta un perfil a través de FirefoxOpciones y Firefox Acepta certificados no seguros por defecto.

Manejo de errores de certificado SSL en Chrome

Para gestionar los errores SSL en Chrome, el objeto DesiredCapabilities que se muestra a continuación acepta todos los certificados SSL, por lo que el usuario no ve ninguna advertencia de certificado durante la ejecución.

Necesitamos crear una instancia de la clase DesiredCapabilities como se muestra a continuación: –

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

⚠️ Nota de versión: CapabilityType.ACCEPT_SSL_CERTS pertenece al antiguo protocolo JSON Wire. Reemplácelo con el fragmento de ChromeOptions que se mostró anteriormente al ejecutar Selenium 4.

Manejo de errores de certificado SSL en IE

A diferencia del manejo de certificados SSL en el navegador Chrome y FirefoxEn IE, es posible que tengas que manejarlo usando javascript.

Para gestionar un certificado SSL en Internet Explorer, puede abordar esta situación de dos maneras.

Método 1) Haz clic en el enlace “Continuar a este sitio web (no recomendado)” en la ventana emergente. Ese enlace tiene el ID “overridelink”, que puedes confirmar en el panel HTML que se abre con F12, como se muestra en la captura de pantalla a continuación.

Advertencia de certificado de Internet Explorer con el enlace para anular la opción "Continuar a este sitio web".

Haga clic en el enlace usando el método driver.navigate() con JavaGuion como se muestra a continuación:

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

Método 2) El segundo método es bastante similar al código de manejo de 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);

El código anterior ayudará a manejar el error del certificado SSL en IE.

⚠️ Nota de versión: Internet Explorer 11 fue retirado en junio de 2022. Ejecute el mismo escenario contra Microsoft Edge con EdgeOptions, o utilice Edge en modo IE cuando una aplicación heredada aún lo requiera.

Preguntas Frecuentes

El proyecto Chromium se ejecuta badssl.com, que sirve subdominios caducados, autofirmados, revocados y con host incorrecto. Dirija un script de prueba a expired.badssl.com para reproducir de forma segura un fallo de certificado real.

No. Selenium 4 lo eliminó a favor de las clases Options del navegador. Cree un ChromeOptions, FirefoxObjeto Options o EdgeOptions, llame a setAcceptInsecureCerts(true) y páselo al constructor del controlador.

Crea un objeto EdgeOptions, llama a setAcceptInsecureCerts(true) y pásalo al constructor de EdgeDriver. El patrón coincide con el de Chrome porque ambos navegadores comparten el motor Chromium.

SafariDriver no tiene interruptor accept-insecure-certs. Utilice JavascriptEl ejecutor ejecuta CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass(), que borra el contenido intersticial solo para esa sesión.

ERR_CERT_DATE_INVALID indica un certificado caducado, ERR_CERT_REVOKED uno revocado y ERR_CERT_AUTHORITY_INVALID un certificado autofirmado o de un emisor no confiable. El código indica la causa antes de modificar cualquier script.

El aprendizaje automático agrupa los fallos de certificados por código de error y host, separando un certificado de prueba caducado de un defecto real. Esta agrupación evita que un problema del entorno se registre como múltiples errores de prueba no relacionados.

Sí. Copiloto de GitHub Crea el objeto Options y el constructor del controlador a partir de un comentario, pero verifica que sugiera setAcceptInsecureCerts en lugar de la llamada eliminada a DesiredCapabilities.

Solo en entornos de prueba. Aceptar todos los certificados oculta defectos de caducidad, nombre de host y cadena, así que no utilice esta opción en las pruebas de humo de producción y verifique el certificado explícitamente cuando se esté probando la seguridad.

Resumir este post con: