Descarga de SSL/TLS de AWS CloudHSM en Windows usando IIS con CNG
En este tutorial, se proporcionan instrucciones paso a paso para configurar la descarga de SSL/TLS con AWS CloudHSM en un servidor web de Windows.
Temas
Información general
En Windows, la aplicación del servidor web Internet Information Services (IIS) para Windows Server
Este tutorial le enseña a realizar las siguientes tareas:
-
Instalar el software del servidor web en una instancia de Amazon EC2.
-
Configurar el software del servidor web para que sea compatible con HTTPS mediante el uso de una clave privada almacenada en su clúster de AWS CloudHSM.
-
(Opcional) Uso de Amazon EC2 para crear una segunda instancia de servidor web y Elastic Load Balancing para crear un equilibrador de carga. El uso de un equilibrador de carga puede mejorar el desempeño al distribuir la carga entre varios servidores. También puede proporcionar redundancia y una mayor disponibilidad si uno o más servidores funcionan mal.
Cuando esté listo para empezar, vaya al Paso 1: configurar los requisitos previos.
Paso 1: configurar los requisitos previos
Si desea configurar un servidor web para la descarga SSL/TLS con AWS CloudHSM, necesita lo siguiente:
-
Un clúster de AWS CloudHSM activo que tenga como mínimo un HSM.
-
Una instancia de Amazon EC2 en la que se ejecuta un sistema operativo Windows y que tenga instalado el siguiente software:
-
El software de cliente de AWS CloudHSM para Windows.
-
Internet Information Services (IIS) para Windows Server.
-
-
Un usuario de criptografía (CU) que sea el propietario y administre la clave privada del servidor web en el HSM.
nota
Este tutorial usa Microsoft Windows Server 2016. También es posible utilizar Microsoft Windows Server 2012, pero no Microsoft Windows Server 2012 R2.
Para configurar una instancia de Windows Server y crear un CU en el HSM
-
Realice los pasos que se indican en Introducción. Cuando lance el cliente de Amazon EC2, seleccione una AMI de Windows Server 2016 o de Windows Server 2012. Cuando haya completado estos pasos, dispondrá de un clúster activo con al menos un HSM. También tendrá una instancia de cliente de Amazon EC2 que ejecuta Windows Server con el software de cliente de AWS CloudHSM para Windows instalado.
-
(Opcional) Añada más HSM a su clúster. Para obtener más información, consulte Agregar un HSM a un clúster de AWS CloudHSM.
-
Conéctese al servidor de Windows. Para obtener más información, consulte Conexión a su instancia en la Guía del usuario de Amazon EC2.
-
Utilice la CLI de CloudHSM para crear un usuario de criptografía (CU). Realice un seguimiento del nombre de usuario y la contraseña del CU. Los necesitará para completar el paso siguiente.
nota
Para obtener información sobre la creación de un usuario, consulte Administrar usuarios de HSM con la CLI de CloudHSM.
-
Establezca las credenciales de inicio de sesión del HSM, utilizando el nombre de usuario y la contraseña del CU que creó en el paso anterior.
-
En el paso 5, si utilizó el Administrador de credenciales de Windows para configurar las credenciales de HSM, descargue
psexec.exe
de SysInternals para ejecutar el siguiente comando como NT Authority\SYSTEM: psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --username
<USERNAME>
--password<PASSWORD>
Reemplace
<NOMBRE DE USUARIO>
y<CONTRASEÑA>
por las credenciales de HSM.
Para instalar IIS en Windows Server
-
Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte Conexión a su instancia en la Guía del usuario de Amazon EC2.
-
En su servidor de Windows, inicie Administrador del servidor.
-
En el panel Administrador del servidor, elija Agregar roles y características.
-
Lea la información de Antes de comenzar y, a continuación, elija Siguiente.
-
En Installation Type, elija Instalación basada en características o en roles. A continuación, elija Next.
-
En Selección de servidor, elija Seleccionar un servidor del grupo de servidores. A continuación, elija Next.
-
En Roles de servidor, haga lo siguiente:
-
Seleccione Servidor web (IIS).
-
En Agregar características necesarias para Servidor web (IIS), elija Agregar características.
-
Elija Siguiente para finalizar la selección de roles de servidor.
-
-
En Features (Características), acepte los valores predeterminados. A continuación, elija Next.
-
Lea la información sobre el Rol de servidor web (IIS). A continuación, elija Next.
-
En Seleccionar servicios de rol, acepte los valores predeterminados o cambie la configuración como desee. A continuación, elija Next.
-
En Confirmation (Confirmación), lea la información de confirmación. Después, seleccione Install (Instalar).
-
Cuando finalice la instalación, elija Cerrar.
Después de completar estos pasos, vaya a Paso 2: crear una solicitud de firma de certificado (CSR) y un certificado.
Paso 2: crear una solicitud de firma de certificado (CSR) y un certificado
Para habilitar HTTPS, el servidor web necesita un certificado SSL/TLS y la clave privada correspondiente. Para utilizar la descarga SSL/TLS con AWS CloudHSM, debe almacenar la clave privada en el HSM del clúster de AWS CloudHSM. Para ello, utilice el proveedor de almacenamiento de claves (KSP) de AWS CloudHSM para la API de criptografía de nueva generación (CNG) de Microsoft si desea crear una solicitud de firma de certificado (CSR). A continuación, debe proporcionar la CSR a una entidad de certificación (CA), para que firme la CSR y genere un certificado.
Creación de una CSR
Utilice el KSP de AWS CloudHSM en Windows Server para crear una CSR.
Para crear una CSR
-
Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte Conexión a su instancia en la Guía del usuario de Amazon EC2.
-
Utilice el siguiente comando para iniciar el daemon de cliente de AWS CloudHSM.
-
En Windows Server, utilice un editor de texto para crear un archivo de solicitud de certificado denominado
IISCertRequest.inf
. A continuación, se muestra el contenido de un archivoIISCertRequest.inf
de ejemplo. Para obtener más información sobre las secciones, las claves y los valores que puede especificar en el archivo, consulte la documentación de Microsoft. No cambie el valor de ProviderName
.[Version] Signature = "$Windows NT$" [NewRequest] Subject = "CN=example.com,C=US,ST=Washington,L=Seattle,O=ExampleOrg,OU=WebServer" HashAlgorithm = SHA256 KeyAlgorithm = RSA KeyLength = 2048 ProviderName = "Cavium Key Storage Provider" KeyUsage = 0xf0 MachineKeySet = True [EnhancedKeyUsageExtension] OID=1.3.6.1.5.5.7.3.1
-
Utilice el comando certreq de Windows
para crear una CSR a partir del archivo IISCertRequest.inf
que creó en el paso anterior. En el siguiente ejemplo, se guarda la CSR en un archivo denominadoIISCertRequest.csr
. Si utilizó otro nombre para el archivo de solicitud de certificado, sustituyaIISCertRequest.inf
por el nombre del archivo. Si lo desea, puede sustituirIISCertRequest.csr
por otro nombre de archivo para el archivo de la CSR.C:\>
certreq -new
IISCertRequest.inf
IISCertRequest.csr
SDK Version: 2.03 CertReq: Request Created
El archivo
IISCertRequest.csr
contiene la CSR. Necesita esta CSR para obtener un certificado firmado.
Obtención e importación de un certificado firmado
En un entorno de producción, normalmente se usa una entidad de certificación (CA) para crear un certificado de una CSR. No es necesaria una CA para un entorno de prueba. Si utiliza una CA, envíe el archivo de la CSR (IISCertRequest.csr
) a la CA para que cree un certificado SSL/TLS firmado.
Como alternativa al uso de una CA, puede utilizar una herramienta como OpenSSL
aviso
Los navegadores no confían en certificados autofirmados y no deben utilizarse en entornos de producción. Se pueden usar en entornos de prueba.
Los siguientes procedimientos muestran cómo crear un certificado autofirmado y cómo utilizarlo para firmar la CSR del servidor web.
Para crear un certificado autofirmado
-
Utilice el siguiente comando de OpenSSL para crear una clave privada. Si lo desea, puede sustituir
SelfSignedCA.key
por el nombre del archivo en que se va a guardar la clave privada.openssl genrsa -aes256 -out
SelfSignedCA.key
2048Generating RSA private key, 2048 bit long modulus ......................................................................+++ .........................................+++ e is 65537 (0x10001) Enter pass phrase for SelfSignedCA.key: Verifying - Enter pass phrase for SelfSignedCA.key:
-
Utilice el siguiente comando de OpenSSL para crear un certificado autofirmado con la clave privada que ha creado en el paso anterior. Este es un comando interactivo. Lea las instrucciones que aparecen en pantalla y siga las indicaciones. Sustituya
SelfSignedCA.key
por el nombre del archivo que contiene la clave privada (si es distinto). Si lo desea, puede sustituirSelfSignedCA.crt
por el nombre del archivo en que se va a guardar el certificado autofirmado.openssl req -new -x509 -days 365 -key
SelfSignedCA.key
-outSelfSignedCA.crt
Enter pass phrase for SelfSignedCA.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
Para utilizar el certificado autofirmado para firmar la CSR del servidor web
-
Utilice el siguiente comando de OpenSSL para utilizar la clave privada y el certificado autofirmado para firmar la CSR. Sustituya los nombres de los archivos siguientes por los que contienen los datos correspondientes (si son distintos).
-
IISCertRequest.csr
: nombre del archivo que contiene el CSR del servidor web -
SelfSignedCA.crt
: nombre del archivo que contiene el certificado autofirmado -
SelfSignedCA.key
: nombre del archivo que contiene la clave privada -
IISCert.crt
: nombre del archivo en que se va a guardar el certificado firmado del servidor web
openssl x509 -req -days 365 -in
IISCertRequest.csr
\ -CASelfSignedCA.crt
\ -CAkeySelfSignedCA.key
\ -CAcreateserial \ -outIISCert.crt
Signature ok subject=/ST=IIS-HSM/L=IIS-HSM/OU=IIS-HSM/O=IIS-HSM/CN=IIS-HSM/C=IIS-HSM Getting CA Private Key Enter pass phrase for SelfSignedCA.key:
-
Una vez que haya completado el paso anterior, tendrá un certificado firmado para el servidor web (IISCert.crt
) y un certificado autofirmado (SelfSignedCA.crt
). Cuando tenga estos archivos, vaya al Paso 3: configurar el servidor web.
Paso 3: configurar el servidor web
Actualice la configuración del sitio web de IIS para que utilice el certificado HTTPS que creó al final del paso anterior. De este modo, concluirá la configuración del software del servidor web de Windows (IIS) para la descarga de SSL/TLS con AWS CloudHSM.
Si utilizó un certificado autofirmado para firmar la CSR, primero debe importar el certificado autofirmado en las entidades de certificación raíz de confianza de Windows.
Para importar el certificado autofirmado en las entidades de certificación raíz de confianza de Windows
-
Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte Conexión a su instancia en la Guía del usuario de Amazon EC2.
-
Copie el certificado autofirmado en el servidor de Windows.
-
En Windows Server, abra el Panel de control.
-
En Buscar en el Panel de control, escriba
certificates
. A continuación, elija Administrar certificados de equipo. -
En la ventana Certificados (equipo local), haga doble clic en Entidades de certificación raíz de confianza.
-
Haga clic con el botón derecho en Certificados y, a continuación, elija Todas las tareas, Importar.
-
En el Asistente para importar certificados, elija Siguiente.
-
Elija Examinar y, a continuación, busque y seleccione el certificado autofirmado. Si creó el certificado autofirmado siguiendo las instrucciones del paso anterior de este tutorial, el certificado autofirmado se llama
SelfSignedCA.crt
. Elija Open. -
Elija Siguiente.
-
En Almacén de certificados, elija Colocar todos los certificados en el siguiente almacén. A continuación, asegúrese de que está seleccionada la opción Entidades de certificación raíz de confianza para Almacén de certificados.
-
Elija Next y, a continuación, elija Finish.
Para actualizar la configuración del sitio web de IIS
-
Si aún no lo ha hecho, conéctese a su servidor de Windows. Para obtener más información, consulte Conexión a su instancia en la Guía del usuario de Amazon EC2.
-
Inicie el daemon de cliente de AWS CloudHSM.
-
Copie el certificado firmado del servidor web (el que creó al final del paso anterior de este tutorial) en el servidor de Windows.
-
En Windows Server, utilice el comando certreq de Windows
para aceptar el certificado firmado, tal y como se muestra en el siguiente ejemplo. Sustituya IISCert.crt
por el nombre del archivo que contiene el certificado firmado del servidor web.C:\>
certreq -accept
IISCert.crt
SDK Version: 2.03
-
En su servidor de Windows, inicie Administrador del servidor.
-
En el panel Administrador del servidor, en la esquina superior derecha, elija Herramientas, Administrador de Internet Information Services (IIS).
-
En la ventana Administrador de Internet Information Services (IIS), haga doble clic en el nombre del servidor. A continuación, haga doble clic en Sitios. Seleccione el sitio web.
-
Seleccione Configuración de SSL. A continuación, en el lado derecho de la ventana, elija Enlaces.
-
En la ventana Enlaces de sitios, elija Agregar.
-
En Tipo, elija https. En Certificado SSL, elija el certificado HTTPS que creó al final del paso anterior de este tutorial.
nota
Si se produce un error durante la vinculación de este certificado, reinicie el servidor y vuelva a intentar este paso.
-
Seleccione Aceptar.
Después de actualizar la configuración del sitio web, vaya al Paso 4: habilitar el tráfico HTTPS y verificar el certificado.
Paso 4: habilitar el tráfico HTTPS y verificar el certificado
Después de configurar el servidor web para la descarga de SSL/TLS con AWS CloudHSM, añada la instancia del servidor web a un grupo de seguridad que permita el tráfico HTTPS entrante. Esto permite a los clientes, como, por ejemplo, navegadores web, establecer una conexión HTTPS con su servidor web. A continuación, establezca una conexión HTTPS con su servidor web y compruebe que usa el certificado que configuró para la descarga de SSL/TLS con AWS CloudHSM.
Temas
Habilitación de las conexiones HTTPS entrantes
Para conectarse a su servidor web desde un cliente (como, por ejemplo, un navegador web), cree un grupo de seguridad que permita conexiones HTTPS entrantes. En concreto, debería permitir conexiones TCP entrantes en el puerto 443. Asigne este grupo de seguridad a su servidor web.
Para crear un grupo de seguridad para HTTPS y asignarlo a su servidor web
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
Elija Security Groups en el panel de navegación.
-
Elija Crear grupo de seguridad.
-
En Create Security Group (Crear grupo de seguridad), haga lo siguiente:
-
Para Security group name (Nombre del grupo de seguridad), escriba un nombre para el grupo de seguridad que está creando.
-
De manera opcional, escriba una descripción del grupo de seguridad que está creando.
-
Para VPC, elija la VPC que contiene la instancia de su servidor web Amazon EC2.
-
Seleccione Add Rule (Añadir regla).
-
Para tipo, seleccione HTTPS en la ventana desplegable.
-
Para Origen, introduzca una ubicación de origen.
-
Elija Crear grupo de seguridad.
-
-
En el panel de navegación, seleccione Instances (Instancia[s]).
-
Seleccione la casilla de verificación junto a la instancia del servidor web.
-
Seleccione las Acciones en el menú desplegable que se encuentra en la parte superior de la página. Seleccione Seguridad, a continuación, Cambiar grupos de seguridad.
-
Para Grupos de seguridad asociados, seleccione el cuadro de búsqueda y elija el grupo de seguridad que creó para HTTPS. A continuación, elija Añadir grupos de seguridad.
-
Seleccione Guardar.
Verificación del uso del certificado configurado por parte de HTTPS
Después de añadir el servidor web a un grupo de seguridad, puede verificar que la descarga de SSL/TLS utiliza su certificado autofirmado. Puede hacerlo mediante un navegador web o con una herramienta como OpenSSL s_client
Para verificar la descarga de SSL/TLS con un navegador web
-
Utilice un navegador web para conectarse a su servidor web mediante el nombre de DNS público o la dirección IP del servidor. Asegúrese de que la dirección URL en la barra de direcciones comienza con https://. Por ejemplo,
https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/
.sugerencia
Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53, para dirigir el nombre de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web. Para obtener más información, consulte Direccionamiento del tráfico a una instancia de Amazon EC2 en la Guía para desarrolladores de Amazon Route 53 o en la documentación para su servicio DNS.
-
Utilice el navegador web para ver el certificado del servidor web. Para más información, consulte los siguientes temas:
-
Para Mozilla Firefox, consulte View a Certificate
en el sitio web de Soporte de Mozilla. -
Para Google Chrome, consulte Conocer los problemas de seguridad
en el sitio web para desarrolladores de Google.
Otros navegadores web pueden tener características similares que puede utilizar para ver el certificado del servidor web.
-
-
Asegúrese de que el certificado SSL/TLS es el que ha configurado para que utilice el servidor web.
Para verificar la descarga de SSL/TLS con OpenSSL s_client
-
Ejecute el siguiente comando OpenSSL para conectarse a su servidor web a través de HTTPS. Sustituya
<server name>
por el nombre de DNS público o la dirección IP de su servidor web.openssl s_client -connect
<server name>
:443sugerencia
Puede utilizar un servicio DNS como, por ejemplo, Amazon Route 53, para dirigir el nombre de dominio de su sitio web (por ejemplo, https://www.ejemplo.com/) a su servidor web. Para obtener más información, consulte Direccionamiento del tráfico a una instancia de Amazon EC2 en la Guía para desarrolladores de Amazon Route 53 o en la documentación para su servicio DNS.
-
Asegúrese de que el certificado SSL/TLS es el que ha configurado para que utilice el servidor web.
Ahora tiene un sitio web que se protege con HTTPS. La clave privada del servidor web está almacenada en un HSM en su clúster de AWS CloudHSM.
Para agregar un equilibrador de carga, consulte Agregar un equilibrador de carga con Elastic Load Balancing para AWS CloudHSM (opcional).