Habilite la autenticación mutua en ALB para exigir que tanto el cliente como el servidor comprueben la identidad del otro antes de establecer una conexión. Esto previene ataques de intermediario (man-in-the-middle) y accesos no autorizados en escenarios de alta seguridad, como transacciones financieras y atención médica.
Descripción general de la función
Por qué usar la autenticación mutua
La mayoría de las aplicaciones web utilizan autenticación unidireccional para establecer conexiones HTTPS. El cliente comprueba la identidad del servidor y se asegura de conectarse al destino correcto.
En las aplicaciones que requieren mayor seguridad, el servidor también debe comprobar la identidad del cliente. La autenticación mutua garantiza que solo los clientes autorizados accedan al servicio. De esta forma, se reducen riesgos como los ataques de intermediario y los accesos no autorizados.
Casos de uso
Transacciones financieras, atención médica, banca y pagos en línea; es decir, cualquier escenario donde el sistema deba comprobar la identidad del cliente además de la del servidor.
Si no necesita autenticar a los clientes, no es necesario utilizar la autenticación mutua.
Limitaciones
Solo las instancias de ALB Standard Edition y WAF-Enhanced Edition admiten la autenticación mutua. Las instancias de ALB Basic Edition no son compatibles con esta función.
Únicamente los listeners HTTPS admiten la autenticación mutua. Los listeners QUIC y HTTP no son compatibles con esta función.
Escenario de ejemplo
Una empresa desplegó una plataforma de transacciones en línea que inicialmente utilizaba solo autenticación HTTPS unidireccional. Dispositivos no autorizados intentaban acceder al sistema, lo cual generaba riesgos de filtración de datos y alteración de transacciones. Conforme creció el tráfico, la plataforma también enfrentó una mayor presión de rendimiento durante los picos.
Para resolver estos problemas, la empresa desplegó una instancia de ALB y habilitó la autenticación mutua.
ALB distribuye las solicitudes de los clientes entre los servidores backend. Esto garantiza un rendimiento estable y tiempos de respuesta rápidos incluso durante picos de alta concurrencia.
Con la autenticación mutua habilitada, todos los clientes deben proporcionar un certificado válido para establecer una conexión. Así se previenen los accesos no autorizados y se reduce el riesgo de filtración de datos o alteración de transacciones.
Requisitos previos
-
Usted purchased o uploaded un certificado de servidor en Certificate Management Service.
Este tema utiliza como ejemplo un certificado de servidor adquirido en la consola de Certificate Management Service de Alibaba Cloud.
NotaAl adquirir un certificado SSL, debe vincularlo a un nombre de dominio. Asegúrese de contar con un nombre de dominio válido y accesible.
Para la autenticación mutua, también necesita un certificado de CA. Usted puede purchase and enable a subordinate CA certificate (requiere cuota de certificados disponible) o upload un certificado de CA raíz o de CA subordinada autofirmado.
-
Usted created a VPC (VPC1) y created two ECS instances (ECS01 y ECS02) en VPC1. Los servicios de aplicación están desplegados en ambas instancias.
Este ejemplo utiliza Alibaba Cloud Linux 3 como sistema operativo y Nginx para configurar el servicio HTTPS.
Una ALB instance is created. Para utilizar la autenticación mutua o certificados SM, la edición de la instancia debe ser Standard Edition o WAF-enabled Edition.
-
Usted created a server group y agregó ECS01 y ECS02 como servidores backend.
Si desea que la instancia de ALB se comunique con los servidores backend mediante HTTPS, seleccione HTTPS como protocolo de backend cuando cree el grupo de servidores. Además, asegúrese de que el servicio HTTPS esté desplegado en los servidores backend.
Procedimiento
Paso 1: Configurar el certificado de cliente
Debe preparar y exportar un certificado de cliente.
Este tema describe dos métodos para obtener un certificado de CA. Usted puede purchase un certificado de CA y solicitar un certificado de cliente en Certificate Management Service, o bien upload un certificado de CA autofirmado en Certificate Management Service.
1. Preparar un certificado de cliente
Desde la consola
Para obtener más información, consulte Apply for a private certificate.
Inicie sesión en la consola de Certificate Management Service.
En el panel de navegación izquierdo, elija . En la página Private Certificate Management, seleccione la región donde se encuentra el servicio PCA.
En la pestaña Private CAs, busque la CA intermedia de destino y haga clic en Apply for Certificate en la columna Actions.
-
En el panel Apply for Certificate, configure los ajustes del certificado como se describe en la siguiente tabla y luego haga clic en Confirm.
En este ejemplo, al solicitar un certificado de cliente, establezca Certificate Type en Client Certificate e introduzca un Personal Name para identificar de forma única al usuario del cliente. Puede conservar los valores predeterminados de other parameters o modificarlos según sea necesario.
Después de enviar la solicitud, la CA privada emite el certificado de inmediato. Luego, haga clic en Certificates en la columna Actions de la CA intermedia para consultar el certificado emitido.
Autofirmado
-
Inicie sesión en ECS01 y ejecute los siguientes comandos para generar un certificado de CA raíz autofirmado.
Una instancia de ALB admite la autenticación mutua con un certificado de CA raíz autofirmado o con un certificado de CA intermedia autofirmado. Este ejemplo utiliza un certificado de CA raíz autofirmado.
-
Ejecute el siguiente comando para crear una clave privada para el certificado de CA raíz:
openssl genrsa -out root.key 4096 -
Ejecute el siguiente comando para crear una solicitud de firma de certificado (CSR) para el certificado de CA raíz:
openssl req -new -out root.csr -key root.keyIntroduzca la información obligatoria cuando el sistema la solicite. A continuación se muestra un ejemplo de código:
NotaAsegúrese de que el Common Name del certificado de CA sea único y distinto del Common Name del certificado de servidor o del certificado de cliente.
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:root Email Address []:a****@example.com A challenge password []: An optional company name []: -
Ejecute el siguiente comando para crear el certificado de CA raíz:
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650Se devuelve el siguiente resultado:
Signature ok subject=C = cn, ST = bj, L = bj, O = alibaba, OU = test, CN = root, emailAddress = a****@example.com Getting Private Key -
Ejecute el comando
lspara consultar el certificado de CA raíz generadoroot.crty su clave privadaroot.key.Usted puede download estos archivos del certificado de CA raíz a su computadora para usarlos más adelante.
-
-
Cargue el certificado de CA raíz autofirmado en Certificate Management Service.
Inicie sesión en la consola de Certificate Management Service.
En el panel de navegación izquierdo, elija .
En la página Certificate Application Repository, haga clic en Create Repository. En el panel Create repository, establezca Data source en Uploaded CA certificates y haga clic en OK.
En la página Certificate Application Repository, haga clic en el repositorio que creó.
En la página Certificates, haga clic en Uploaded Certificate. En el panel CA information, cargue el archivo del certificado de CA raíz
root.crty haga clic en Confirm and Enable.
2. Exportar el certificado de cliente
Exportar desde la consola
Para utilizar un certificado de cliente adquirido en la consola con la autenticación mutua, expórtelo mediante los siguientes pasos:
En la pestaña Private CAs, busque la CA subordinada de destino y luego haga clic en Certificates en la columna Actions.
En la página Certificates, busque el certificado privado de destino y luego haga clic en Download en la columna Actions.
-
En el cuadro de diálogo Download Certificate, seleccione el formato de certificado que desea descargar y luego haga clic en Confirm and Download. Si selecciona Include Trust Chain, el certificado descargado incluirá la cadena de certificados completa.
En este ejemplo, seleccione PFX para Certificate format. Este formato es compatible con los navegadores.
Los archivos descargados incluyen un archivo de certificado de cliente con la extensión
.pfxy un archivo de texto con la extensión.txtque contiene la contraseña de cifrado de la clave privada del cliente.
Exportar un certificado autofirmado
Para utilizar un certificado de cliente generado a partir de un certificado de CA autofirmado con la autenticación mutua, siga estos pasos para generarlo:
Inicie sesión en ECS01 y realice los siguientes pasos para generar un certificado de cliente:
-
Ejecute el siguiente comando para generar una clave privada para el certificado de cliente:
openssl genrsa -out client.key 4096 -
Ejecute el siguiente comando para generar una CSR para el certificado de cliente:
openssl req -new -out client.csr -key client.keyIntroduzca la información obligatoria cuando el sistema la solicite. A continuación se muestra un ejemplo de código:
NotaAsegúrese de que el Common Name del certificado de cliente sea único y distinto del Common Name del certificado de servidor, del certificado raíz o de cualquier otro certificado de cliente.
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:client-alb-user Email Address []:username@example.com A challenge password []: An optional company name []: -
Ejecute el siguiente comando para generar el certificado de cliente.
openssl x509 -req -in client.csr -out client.crt -CA root.crt -CAkey root.key -CAcreateserial -days 3650Se devuelve el siguiente resultado:
Signature ok subject=C = cn, ST = bj, L = bj, O = alibaba, OU = test, CN = client-alb-user, emailAddress = username@example.com Getting CA Private Key -
Ejecute el siguiente comando para convertir el certificado de cliente generado
client.crta un archivo PKCS12, que es compatible con los navegadores. Introduzca la contraseña de cifrado de la clave privada del cliente cuando el sistema la solicite.openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 -
Ejecute el comando
lspara consultar el archivo de certificado de clienteclient.p12generado.Usted puede download el archivo de certificado de cliente a su computadora para utilizarlo después en el cliente.
Paso 2: Configurar un listener de autenticación mutua
En la barra de navegación superior de la consola de ALB, seleccione la región donde está desplegada la instancia de ALB. En la página Instances, busque la instancia de ALB que desea gestionar y haga clic en su ID.
-
En la página de detalles de la instancia, haga clic en la pestaña Listener y luego en Create Listener. Configure los parámetros y haga clic en Next.
En este ejemplo, establezca Select Listener Protocol en HTTPS y Listener Port en 443. Puede conservar los valores predeterminados de other HTTPS listener parameters o modificarlos según sea necesario.
-
En el paso SSL Certificate, seleccione el certificado de servidor que adquirió. Después, active Enable Mutual Authentication, seleccione un origen de certificado de CA y su certificado correspondiente. Por último, elija una directiva de seguridad TLS y haga clic en Next.
Establezca CA Certificate Source en Alibaba Cloud. En la lista desplegable Default CA Certificate, seleccione el certificado de CA que solicitó en Step 1: Configure the client certificate.
Establezca CA Certificate Source en Third-party. En la lista desplegable Default CA Certificate, seleccione el certificado de CA autofirmado que cargó en Step 1: Configure the client certificate.
En el paso Server Group, seleccione un Server Type y el Server Type del backend. Revise la información sobre los servidores backend ECS01 y ECS02, y luego haga clic en Next.
En el paso Confirm, revise las configuraciones y haga clic en Submit.
Paso 3: Configurar la resolución DNS
Para entornos de producción, se recomienda crear un registro CNAME para asignar su nombre de dominio personalizado al nombre DNS de la instancia de ALB.
En el panel de navegación izquierdo de la consola de ALB, elija . En la página Instances, copie el nombre DNS de la instancia de ALB creada.
-
Realice los siguientes pasos para agregar un registro CNAME.
-
En la página DNS Resolution, busque el nombre de dominio personalizado de destino y haga clic en DNS Settings en la columna Operations.
NotaSi su nombre de dominio no está registrado en Alibaba Cloud, primero debe add your domain name a la consola de Alibaba Cloud DNS antes de poder configurar los ajustes de DNS.
-
En la página de ajustes de DNS, haga clic en Add DNS record, configure el registro CNAME y luego haga clic en OK.
En este ejemplo, establezca Record type en CNAME y Record value en el nombre DNS de la instancia de ALB. Puede conservar los valores predeterminados de other DNS record parameters o modificarlos según sea necesario.
-
Paso 4: Probar la autenticación mutua
Este ejemplo utiliza un cliente Windows y el navegador Chrome.
-
Instale el exported client certificate en el cliente.
Haga doble clic en el archivo de certificado de cliente descargado y siga las indicaciones del asistente de importación para instalar el certificado de cliente.
En el navegador, introduzca
https://<your custom domain name>. En el cuadro de diálogo que aparece, seleccione el certificado que se usará para la autenticación del cliente.-
Actualice el navegador. Podrá observar que las solicitudes de los clientes se distribuyen entre los servidores ECS01 y ECS02.
Si la página devuelve Hello World ! This is ECS01., la solicitud se reenvía a ECS01.
Si actualiza la página y esta devuelve Hello World ! This is ECS02., la solicitud se reenvía a ECS02.
Referencias
Operaciones en la consola
-
Información relacionada con ALB:
-
Información relacionada con certificados:
Referencia de API
Puede llamar a las siguientes operaciones de API y establecer el parámetro CaEnabled en true para habilitar la autenticación mutua.