Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS CloudHSM Descarga de SSL/TLS en Linux mediante Tomcat con JSSE
En este tema se proporcionan step-by-step instrucciones para configurar la descarga de SSL/TLS mediante la extensión Java Secure Socket Extension (JSSE) con el SDK de JCE. AWS CloudHSM
Temas
Descripción general
En AWS CloudHSM, los servidores web de Tomcat funcionan en Linux para admitir HTTPS. El SDK de AWS CloudHSM JCE proporciona una interfaz que se puede utilizar con JSSE (Java Secure Socket Extension) para permitir su uso en dichos servidores HSMs web. AWS CloudHSM JCE es el puente que conecta JSSE con su clúster de AWS CloudHSM. JSSE es una API de Java para los protocolos Capa de conexión segura (SSL) y Seguridad de la capa de transporte (TLS).
Paso 1: configurar los requisitos previos
Siga estos requisitos previos para utilizar un servidor web Tomcat con AWS CloudHSM Client SDK 5 y un servidor web TomcatSSL/TLS offload on Linux. These prerequisites must be met to set up web server SSL/TLS.
nota
Las diferentes plataformas requieren requisitos previos diferentes. Siga siempre los pasos de instalación adecuados para su plataforma.
Requisitos previos
-
Una EC2 instancia de Amazon que ejecuta un sistema operativo Linux con un servidor web Tomcat instalado.
-
Un usuario de criptografía (CU) que sea el propietario y administre la clave privada del servidor web en el HSM.
-
Un AWS CloudHSM clúster activo con al menos dos módulos de seguridad de hardware (HSMs) que tengan instalado y configurado JCE for Client SDK 5.
nota
Puede usar un único clúster de HSM, pero primero debe deshabilitar la durabilidad de la clave de cliente. Para obtener más información, consulte Administrar la configuración de durabilidad de las claves de cliente y Herramienta de configuración del SDK 5 de cliente.
Cómo cumplir los requisitos previos
-
Instale y configure el JCE AWS CloudHSM en un AWS CloudHSM clúster activo con al menos dos módulos de seguridad de hardware ()HSMs. Para obtener más información sobre la instalación, consulte JCE para SDK 5 de cliente.
-
En una instancia de EC2 Linux que tenga acceso a su AWS CloudHSM clúster, siga las instrucciones de Apache Tomcat
para descargar e instalar el servidor web Tomcat. -
Utilice la CLI de CloudHSM para crear un usuario de criptografía (CU). Para obtener más información sobre la administración de los usuarios de HSM, consulte Administrar a los usuarios de HSM con la CLI de CloudHSM.
sugerencia
Realice un seguimiento del nombre de usuario y la contraseña del CU. Los necesitará más adelante cuando genere o importe el certificado y la clave privada de HTTPS para el servidor web.
Para configurar JCE con Java Keytool, siga las instrucciones de Utilice Client SDK 5 para integrarse AWS CloudHSM con Java Keytool y Jarsigner.
Después de completar estos pasos, vaya a Paso 2: generar o importar una clave privada y un certificado SSL/TLS.
Notas
-
Para usar Linux (SELinux) y servidores web con seguridad mejorada, debe permitir las conexiones TCP salientes en el puerto 2223, que es el puerto que el Client SDK 5 utiliza para comunicarse con el HSM.
-
Para crear y activar un clúster y conceder a una EC2 instancia acceso al clúster, sigue los pasos que se indican en Cómo empezar con. AWS CloudHSM En esta sección se ofrecen step-by-step instrucciones para crear un clúster activo con un HSM y una instancia de EC2 cliente de Amazon. Puede utilizar esta instancia de cliente como su servidor web.
-
Para evitar deshabilitar la durabilidad de la clave de cliente, agregue más de un HSM a su clúster. Para obtener más información, consulte Añadir una HSM a un AWS CloudHSM clúster.
-
Para conectarse a su instancia de cliente, puede utilizar SSH o PuTTY. Para obtener más información, consulte Conexión a una instancia de Linux mediante SSH o Conexión a una instancia de Linux desde Windows mediante PuTTY en la documentación de Amazon EC2.
Paso 2: generar o importar una clave privada y un certificado SSL/TLS
Para habilitar HTTPS, la aplicación de servidor web Tomcat necesita una clave privada y la correspondiente SSL/TLS certificate. To use web server SSL/TLS descarga AWS CloudHSM, por lo que debe almacenar la clave privada en un HSM de su clúster. AWS CloudHSM
nota
Si todavía no dispone de una clave privada y un certificado correspondiente, genere una clave privada en un HSM. Use la clave privada para crear una solicitud de firma de certificado (CSR), la cual utilizará para crear un certificado SSL/TLS.
Debe crear un AWS CloudHSM KeyStore archivo local que contenga una referencia a su clave privada en el HSM y al certificado asociado. El servidor web utiliza el AWS CloudHSM KeyStore archivo para identificar la clave privada en el HSM durante la descarga de SSL/TLS.
Generación de una clave privada
En esta sección se muestra cómo generar un key pair mediante el KeyTool JDK. Una vez que haya generado un par de claves dentro del HSM, puede exportarlo como un KeyStore archivo y generar el certificado correspondiente.
Según su caso de uso, puede generar un par de claves RSA o EC. Los siguientes pasos muestran cómo generar un par de claves de RSA.
Use el genkeypair
comando in KeyTool para generar un key pair de RSA
Tras sustituir lo
<VARIABLES>
siguiente por sus datos específicos, utilice el siguiente comando para generar un archivo de almacén de claves denominadojsse_keystore.keystore
, que tendrá una referencia a su clave privada en el HSM.$
keytool -genkeypair -alias
<UNIQUE ALIAS FOR KEYS>
-keyalg<KEY ALGORITHM>
-keysize<KEY SIZE>
-sigalg<SIGN ALGORITHM>
\ -keystore<PATH>
/<JSSE KEYSTORE NAME>
.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE PASSWORD>
<PATH>
: la ruta en la que desea generar el archivo de almacén de claves.<UNIQUE ALIAS FOR KEYS>
: Se utiliza para identificar de forma exclusiva la clave en el HSM. Este alias se establecerá como atributo LABEL de la clave.<KEY PASSWORD>
: Guardamos la referencia a su clave en el archivo del almacén de claves local y esta contraseña protege esa referencia local.<KEYSTORE PASSWORD>
: Esta es la contraseña del archivo del almacén de claves local.<JSSE KEYSTORE NAME>
: nombre del archivo de almacén de claves.<CERT DOMAIN NAME>
: Nombre distintivo X.500.<KEY ALGORITHM>
: algoritmo clave para generar un par de claves (por ejemplo, RSA y EC).<KEY SIZE>
: tamaño de clave para generar el par de claves (por ejemplo, 2048, 3072 y 4096).<SIGN ALGORITHM>
: tamaño de clave para generar el par de claves (por ejemplo, SHA1with RSA, SHA224with RSA, SHA256with RSA y SHA384with RSA). SHA512with
-
Para confirmar que el comando se ha utilizado correctamente, introduzca el siguiente comando y compruebe que ha generado correctamente un par de claves RSA.
$
ls
<PATH>
/<JSSE KEYSTORE NAME>
.keystore
Generación de un certificado autofirmado
Una vez que haya generado una clave privada junto con el archivo del almacén de claves, puede usar este archivo para generar una solicitud de firma de certificado (CSR) y un certificado.
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íele el archivo CSR y utilice el certificado SSL/TLS firmado que le proporcione en su servidor web para HTTPS.
Como alternativa al uso de una CA, puede utilizarla KeyTool para crear un certificado autofirmado. Los navegadores no confían en certificados autofirmados y no deben utilizarse en entornos de producción. Se pueden usar en entornos de prueba.
aviso
Los certificados autofirmados deben utilizarse únicamente en entornos de prueba. En entornos de producción, utilice un método más seguro como, por ejemplo, una entidad de certificación para crear un certificado.
Temas
Generación de un certificado
-
Obtenga una copia del archivo de almacén de claves generado en un paso anterior.
-
Ejecute el siguiente comando para usar el y KeyTool crear una solicitud de firma de certificado (CSR).
$
keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore
<JSSE KEYSTORE NAME>
.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE PASSWORD>
nota
El archivo de salida de la solicitud de firma de certificado es
certreq.csr
.
Firma de un certificado
-
Tras sustituir lo
<VARIABLES>
siguiente por tus datos específicos, ejecuta el siguiente comando para firmar tu CSR con tu clave privada en tu HSM. Esto creará un certificado autofirmado.$
keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias
<UNIQUE ALIAS FOR KEYS>
-keypass<KEY_PASSWORD>
-storepass<KEYSTORE_PASSWORD>
-sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystorenota
certificate.crt
es el certificado firmado que usa la clave privada del alias.
Importación de un certificado en KeyStore
Tras sustituir lo
<VARIABLES>
siguiente por tus datos específicos, ejecuta el siguiente comando para importar un certificado firmado como certificado de confianza. Este paso almacenará el certificado en la entrada del almacén de claves identificada por un alias.$
keytool -import -alias
<UNIQUE ALIAS FOR KEYS>
-keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE_PASSWORD>
Conversión de un certificado en un PEM
Ejecute el siguiente comando para convertir el archivo de certificado firmado (
.crt
) en un PEM. El archivo PEM se utilizará para enviar la solicitud desde el cliente http.$
openssl x509 -inform der -in certificate.crt -out certificate.pem
Después de completar estos pasos, vaya al Paso 3: configurar el servidor web.
Paso 3:cConfigurar el servidor web Tomcat
Actualice la configuración de software del servidor web para utilizar el certificado HTTPS y el archivo PEM correspondiente que ha creado en el paso anterior. Recuerde hacer una copia de seguridad de sus certificados y claves existentes antes de empezar. De este modo, concluirá la configuración del software del servidor web de Linux para la descarga SSL/TLS con AWS CloudHSM. Para obtener más información, consulte Referencia de configuración de Apache Tomcat 9
Detención del servidor
Tras sustituir lo
<VARIABLES>
siguiente por sus datos específicos, ejecute el siguiente comando para detener el servidor Tomcat antes de actualizar la configuración$
/
<TOMCAT DIRECTORY>
/bin/shutdown.sh<TOMCAT DIRECTORY>
: Su directorio de instalación de Tomcat.
Actualice la ruta de clases de Tomcat
-
Conéctese a su instancia de cliente.
-
Localice la carpeta de instalación de Tomcat.
-
Tras sustituir lo
<VARIABLES>
siguiente por sus datos específicos, utilice el siguiente comando para añadir la biblioteca y AWS CloudHSM la ruta de Java en Tomcatclasspath, ubicadas en el archivo.sh. Tomcat/bin/catalina$
sed -i 's@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar:'"
<JAVA LIBRARY>
"'\/*:\/opt\/cloudhsm\/java\/*:.\/*@'<TOMCAT PATH>
/bin/catalina.sh<JAVA LIBRARY>
: ubicación de la biblioteca JRE de Java.<TOMCAT PATH>
: carpeta de instalación de Tomcat.
Añada un conector HTTPS a la configuración del servidor.
Acceda a la carpeta de instalación de Tomcat.
Tras sustituir lo
<VARIABLES>
siguiente por sus datos específicos, utilice el siguiente comando para añadir un conector HTTPS y utilizar los certificados generados como requisitos previos:$
sed -i '/<Connector port="8080"/i <Connector port=\"443\" maxThreads=\"200\" scheme=\"https\" secure=\"true\" SSLEnabled=\"true\" keystoreType=\"CLOUDHSM\" keystoreFile=\"
<CUSTOM DIRECTORY>
/<JSSE KEYSTORE NAME>
.keystore\" keystorePass=\"<KEYSTORE PASSWORD>
\" keyPass=\"<KEY PASSWORD>
\" keyAlias=\"<UNIQUE ALIAS FOR KEYS>
" clientAuth=\"false\" sslProtocol=\"TLS\"/>'<TOMCAT PATH>
/conf/server.xml<CUSTOM DIRECTORY>
: Directorio en el que se encuentra el archivo de almacén de claves.<JSSE KEYSTORE NAME>
: Nombre del archivo de almacén de claves.<KEYSTORE PASSWORD>
: Esta es la contraseña del archivo del almacén de claves local.<KEY PASSWORD>
: Almacenamos la referencia a su clave en el archivo del almacén de claves local y esta contraseña protege esa referencia local.<UNIQUE ALIAS FOR KEYS>
: Se utiliza para identificar de forma exclusiva la clave en el HSM. Este alias se establecerá como atributo LABEL de la clave.<TOMCAT PATH>
: la ruta a la carpeta de Tomcat.
Inicio del servidor
Tras sustituir lo
<VARIABLES>
siguiente por sus datos específicos, utilice el siguiente comando para iniciar el servidor Tomcat:$
/
<TOMCAT DIRECTORY>
/bin/startup.shnota
<TOMCAT DIRECTORY>
es el nombre del directorio de instalación de Tomcat.
Después de actualizar la configuración del servidor web, vaya a 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, añada la instancia del servidor web a un grupo de seguridad que AWS CloudHSM 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, establece una conexión HTTPS con tu servidor web y comprueba que utiliza el certificado con el que configuraste la descarga de SSL/TLS. 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
-
Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/
. -
Elija Security Groups en el panel de navegación.
-
Elija Creación de 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 la VPC, elige la VPC que contiene la instancia de Amazon de tu servidor web. EC2
-
Seleccione Add Rule (Añadir regla).
-
Para tipo, seleccione HTTPS en la ventana desplegable.
-
Para Origen, introduzca una ubicación de origen.
-
Elija Creación de 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
Tras añadir el servidor web a un grupo de seguridad, puede comprobar 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 usar un servicio de DNS como Amazon Route 53 para enrutar el nombre de dominio de su sitio web (por ejemplo, https://www.example.com/) a su servidor web. Para obtener más información, consulte Enrutamiento del tráfico a una EC2 instancia de Amazon en la Guía para desarrolladores de Amazon Route 53 o en la documentación de su servicio de DNS.
-
Utilice el navegador web para ver el certificado del servidor web. Para obtener 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.
<server name>
Sustitúyalo por el nombre DNS público o la dirección IP de su servidor web.openssl s_client -connect
<server name>
:443sugerencia
Puede usar un servicio de DNS como Amazon Route 53 para enrutar el nombre de dominio de su sitio web (por ejemplo, https://www.example.com/) a su servidor web. Para obtener más información, consulte Enrutamiento del tráfico a una EC2 instancia de Amazon en la Guía para desarrolladores de Amazon Route 53 o en la documentación de su servicio de 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 se almacena en un HSM de su AWS CloudHSM clúster.
Para agregar un equilibrador de carga, consulte Agregar un equilibrador de carga con Elastic Load Balancing para AWS CloudHSM (opcional).