Autenticación mutua
Escenarios
En escenarios comunes de servicio HTTPS, solo se requiere el certificado de servidor para la autenticación. Para algunos servicios de misión crítica, como las transacciones financieras, debe desplegar tanto el certificado de servidor como el certificado de cliente para la autenticación mutua.
Los certificados autofirmados se utilizan como ejemplo para describir cómo configurar la autenticación mutua. Los certificados autofirmados no proporcionan todas las propiedades de seguridad proporcionadas por los certificados firmados por una CA. Se recomienda que compre certificados de SSL Certificate Manager (SCM) o CA.
Creación de un certificado de CA mediante OpenSSL
- Inicie sesión en un servidor Linux con OpenSSL instalado.
- Cree el directorio server y cambie al directorio:
mkdir ca
cd ca
- Cree el archivo de configuración del certificado ca_cert.conf. El contenido del archivo es el siguiente:
[ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = ELB
- Cree la clave privada del certificado de CA ca.key.
openssl genrsa -out ca.key 2048
Figura 1 Clave privada del certificado de CA
- Cree el archivo de solicitud de firma de certificado (CSR) ca.csr para el certificado de CA.
openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf
- Cree el certificado CA autofirmado ca.crt.
openssl x509 -req -in ca.csr -out ca.crt -sha1 -days 5000 -signkey ca.key
Figura 2 Creación de un certificado de CA autofirmado
Emisión de un certificado de servidor mediante el certificado de CA
El certificado de servidor puede ser un certificado firmado por CA o uno autofirmado. En los pasos siguientes, se utiliza un certificado autofirmado como ejemplo para describir cómo crear un certificado de servidor.
- Inicie sesión en el servidor donde se genera el certificado de CA.
- Cree un directorio en el mismo nivel que el directorio del certificado de CA y cambie al directorio.
cd server
- Cree el archivo de configuración de certificado server_cert.conf. El contenido del archivo es el siguiente:
[ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = ELB CN = www.test.com
Establezca el campo CN en el nombre de dominio o la dirección IP del servidor Linux.
- Cree la clave privada de certificado de servidor server.key.
- Cree el archivo CSR server.csr para el certificado de servidor.
openssl req -out server.csr -key server.key -new -config ./server_cert.conf
- Utilice el certificado de CA para emitir el certificado de servidor server.crt.
openssl x509 -req -in server.csr -out server.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
Figura 3 Emisión de un certificado de servidor
Emisión de un certificado de cliente mediante el certificado de CA
- Inicie sesión en el servidor donde se genera el certificado de CA.
- Cree un directorio en el mismo nivel que el directorio del certificado de CA y cambie al directorio.
cd client
- Cree el archivo de configuración de certificado client_cert.conf. El contenido del archivo es el siguiente:
[ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = ELB CN = www.test.com
Establezca el campo CN en el nombre de dominio o la dirección IP del servidor Linux.
- Cree la clave privada del certificado de cliente client.key.
openssl genrsa -out client.key 2048
Figura 4 Creación de una clave privada de certificado de cliente
- Cree el archivo CSR client.csr para el certificado de cliente.
openssl req -out client.csr -key client.key -new -config ./client_cert.conf
Figura 5 Creación de un archivo CSR de certificado de cliente
- Utilice el certificado de CA para emitir el certificado de cliente client.crt.
openssl x509 -req -in client.csr -out client.crt -sha1 -CAcreateserial -days 5000 -CA ../ca/ca.crt -CAkey ../ca/ca.key
Figura 6 Emisión de un certificado de cliente
- Convierta el certificado de cliente en un archivo a .p12 que pueda identificar el navegador.
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
Se requiere una contraseña durante la ejecución del comando. Guarde esta contraseña, que será necesaria cuando importe el certificado mediante el navegador.
Configuración del certificado del servidor y la clave privada
- Inicie sesión en la consola de gestión del balanceador de carga.
- En el panel de navegación de la izquierda, elija Certificates.
- En el panel de navegación de la izquierda, elija Certificates. En la página mostrada, haga clic en Add Certificate. En el cuadro de diálogo Add Certificate, seleccione Server certificate y copie el contenido del certificado de servidor server.crt en el área Certificate Content y el contenido del archivo de clave privada server.key en el área Private Key y haga clic en OK.
Elimine el último carácter de nueva línea antes de copiar el contenido.
El certificado y la clave privada deben estar codificados por PEM.
Configuración del certificado de CA
- Inicie sesión en la consola de gestión del balanceador de carga.
- En el panel de navegación de la izquierda, elija Certificates.
- Haga clic en Add Certificate. En el cuadro de diálogo Add Certificate, seleccione CA certificate, copie el contenido del certificado de CA ca.crt creado en Creación de un certificado de CA mediante OpenSSL en el área Certificate Content y haga clic en OK.
Elimine el último carácter de nueva línea antes de copiar el contenido.
El certificado debe estar codificado por PEM.
Configuración de la Autenticación Mutua
- Inicie sesión en la consola de gestión del balanceador de carga.
- Busque el balanceador de carga y haga clic en su nombre. En Listeners, haga clic en Add Listener. Seleccione HTTPS para Frontend Protocol y Mutual authentication para SSL Authentication y seleccione un certificado de CA y un certificado de servidor.
Agregar servidores de backend.
Para obtener información detallada sobre las operaciones, consulte Descripción general.
Importación y prueba del certificado de cliente
Método 1: Uso de un navegador
- Importe el certificado de cliente mediante un navegador (Internet Explorer 11 se utiliza como ejemplo).
- Exporte client.p12 desde el servidor Linux.
- Abra el navegador, seleccione Settings > Internet Options y haga clic en Content.
- Haga clic en Certificates y, a continuación, Import para importar el certificado client.p12.
Figura 7 Importación del certificado client.p12
- Verifique la importación.
Introduzca la dirección de acceso en el cuadro de dirección de su navegador. Aparece una ventana en la que se le pide que seleccione el certificado. Seleccione el certificado de cliente y haga clic en OK. Si se puede acceder al sitio web, el certificado se importa correctamente.Figura 8 Acceder al sitio web
Método 2: Usando cURL
- Importe el certificado de cliente.
Copie el certificado de cliente client.crt y la clave privada client.key en un nuevo directorio, por ejemplo, /home/client_cert.
- Verifique la importación.
En la pantalla Shell, ejecute el siguiente comando:
curl -k --cert /home/client_cert/client.crt --key /home/client_cert/client.key https://XXX.XXX.XXX.XXX:XXX/ -I
Asegúrese de que la dirección del certificado, la dirección de clave privada, la dirección IP y el puerto de escucha del balanceador de carga sean correctos. Reemplace https://XXX.XXX.XXX.XXX:XXX con la dirección IP y el número de puerto reales. Si se devuelve el código de respuesta esperado, el certificado se importa correctamente.
Figura 9 Ejemplo de un código de respuesta correcto