Paso 2: generar o importar una clave privada y un certificado SSL/TLS - AWS CloudHSM

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.

Paso 2: generar o importar una clave privada y un certificado SSL/TLS

Para habilitar HTTPS, su aplicación de servidor web Tomcat necesita una clave privada y un certificado SSL/TLS correspondiente. Para utilizar la descarga de SSL/TLS de un servidor web AWS CloudHSM, 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 par de claves utilizando el JDK. KeyTool 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
  1. Tras sustituir las siguientes <VARIABLES> por sus datos específicos, utilice el siguiente comando para generar un archivo de almacén de claves denominado jsse_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 su archivo de almacén de claves.

    • <UNIQUE ALIAS FOR KEYS>: se usa para identificar de forma exclusiva su clave en el HSM. Este alias se establecerá como atributo LABEL de la clave.

    • <KEY PASSWORD>: almacenamos la referencia de su clave en el archivo de almacén de claves local. Esta contraseña protege la 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 la clave para generar el par de claves (por ejemplo, SHA1withRSA, SHA224withRSA, SHA256withRSA, SHA384withRSA y SHA512withRSA).

  2. 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
    1. Obtenga una copia del archivo de almacén de claves generado en un paso anterior.

    2. 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 las siguientes <VARIABLES> por sus datos específicos, ejecute el siguiente comando para firmar su CSR con su clave privada en su 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.keystore
      nota

      certificate.crt es el certificado firmado que usa la clave privada del alias.

    Importación de un certificado en KeyStore
    • Tras sustituir las siguientes <VARIABLES> por sus datos específicos, ejecute 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.