Configurar una TLS mutua entre el cliente y el AWS CloudHSM (recomendado) - AWS CloudHSM

Configurar una TLS mutua entre el cliente y el AWS CloudHSM (recomendado)

En los siguientes temas se describen los pasos que debe realizar para habilitar la TLS mutua (mTLS) entre el cliente y el AWS CloudHSM. Actualmente, esta característica está disponible exclusivamente en hsm2m.medium. Para obtener más información sobre los tipos de HSM, consulte Modos de clúster del AWS CloudHSM.

Paso 1. Crear y registrar un anclaje de veracidad en el HSM

Se debe crear y registrar un anclaje de veracidad en el HSM antes de habilitar la mTLS. Se trata de un proceso de dos partes:

Crear una clave privada y un certificado raíz autofirmado

nota

Para un clúster de producción, la clave debe crearse de forma segura mediante una fuente de asignación al azar. Recomendamos que utilice un HSM externo seguro que esté sin conexión o equivalente. Guarde la clave de forma segura.

Durante las fases de desarrollo y pruebas, puede utilizar cualquier herramienta adecuada (como OpenSSL) para crear la clave y autofirmar un certificado raíz. Necesitará la clave y el certificado raíz para firmar el certificado de cliente en la mTLS habilitada para el AWS CloudHSM.

En los siguientes ejemplos, se muestra cómo crear una clave privada y un certificado raíz autofirmado con OpenSSL.

ejemplo : creación de una clave privada con OpenSSL

Use el siguiente comando para crear una clave RSA de 4096 bits y cifrada con el algoritmo AES-256. Para usar este ejemplo, sustituya <mtls_ca_root_1.key> por el nombre del archivo donde desea almacenar la clave.

$ openssl genrsa -out <mtls_ca_root_1.key> -aes256 4096 Generating RSA private key, 4096 bit long modulus .....................................+++ .+++ e is 65537 (0x10001) Enter pass phrase for mtls_ca_root_1.key: Verifying - Enter pass phrase for mtls_ca_root_1.key:
ejemplo — Crear un certificado raíz autofirmado con OpenSSL

Use el siguiente comando para crear un certificado raíz autofirmado y denominado mtls_ca_root_1.crt a partir de la clave privada que acaba de crear. El certificado es válido durante 25 años (9130 días). Lea las instrucciones que aparecen en pantalla y siga las indicaciones.

$ openssl req -new -x509 -days 9130 -key mtls_ca_root_1.key -out mtls_ca_root_1.crt Enter pass phrase for mtls_ca_root_1.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 []:

Registrar el anclaje de veracidad en el HSM

Tras crear un certificado raíz autofirmado, el administrador debe registrarlo como anclaje de veracidad en el clúster del AWS CloudHSM.

Para registrar un anclaje de veracidad en el HSM
  1. Use el siguiente comando para iniciar la CLI de CloudHSM:

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. Inicie sesión en la CLI de CloudHSM como administrador.

    aws-cloudhsm > login --username admin --role admin Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } }
  3. Use el comando Registrar un anclaje de veracidad con la CLI de CloudHSM para registrar el anclaje de veracidad. Para obtener más información, consulte el siguiente ejemplo o utilice el comando help cluster mtls register-trust-anchor.

ejemplo — Registrar un anclaje de veracidad con un clúster del AWS CloudHSM

En el siguiente ejemplo, se muestra cómo se usa el comando cluster mtls register-trust-anchor la CLI de CloudHSM para registrar un anclaje de veracidad en el HSM. Para utilizar este comando, el administrador tiene que haber iniciado sesión en el HSM. Reemplace estos valores por sus propios valores:

aws-cloudhsm > cluster mtls register-trust-anchor --path </path/mtls_ca_root_1.crt> { "error_code": 0, "data": { "trust_anchor": { "certificate-reference": "0x01", "certificate": "<PEM Encoded Certificate>", "cluster-coverage": "full" } } }
nota

AWS CloudHSM admite el registro de certificados intermedios como anclaje de veracidad. En esos casos, todo el archivo de cadena de certificados codificados en PEM debe registrarse en el HSM junto con los certificados en orden jerárquico.

AWS CloudHSM admite una cadena de certificados de 6980 bytes.

Tras registrar correctamente el anclaje de veracidad, puede ejecutar el comando cluster mtls list-trust-anchors para comprobar los anclajes de veracidad registrados actualmente, como se muestra a continuación:

aws-cloudhsm > cluster mtls list-trust-anchors { "error_code": 0, "data": { "trust_anchors": [ { "certificate-reference": "0x01", "certificate": "<PEM Encoded Certificate>", "cluster-coverage": "full" } ] } }
nota

El número máximo de anclajes de veracidad que se puede registrar en hsm2m.medium es dos (2).

Paso 2. Habilitar la mTLS para el AWS CloudHSM

Para habilitar la mTLS en el AWS CloudHSM, debe crear una clave privada y un certificado de cliente que tengan la firma del certificado raíz que generamos en Crear y registrar un anclaje de veracidad en el HSM. A continuación, debe usar cualquiera de las herramientas de configuración de Client SDK 5 para configurar la ruta de la clave privada y la ruta de la cadena del certificado de cliente.

Crear una clave privada y una cadena del certificado de cliente

ejemplo : creación de una clave privada con OpenSSL

Use el siguiente comando para crear una clave RSA de 4096 bits y cifrada con el algoritmo AES-256. Para usar este ejemplo, sustituya <ssl-client.key> por el nombre del archivo donde desea almacenar la clave.

$ openssl genrsa -out <ssl-client.key> -aes256 4096 Generating RSA private key, 4096 bit long modulus .....................................+++ .+++ e is 65537 (0x10001) Enter pass phrase for ssl-client.key: Verifying - Enter pass phrase for ssl-client.key:
ejemplo – Generar una solicitud de firma de certificado (CSR) con OpenSSL

Use el siguiente comando para generar una solicitud de firma de certificado (CSR) desde la clave privada que acaba de crear. Lea las instrucciones que aparecen en pantalla y siga las indicaciones.

$ openssl req -new -key <ssl-client.key> -out <ssl-client.csr> Enter pass phrase for ssl-client.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 []:
ejemplo – Firmar la CSR mediante el certificado raíz

Use el siguiente comando para firmar la CSR con el certificado raíz que creamos y registramos en Crear y registrar un anclaje de veracidad en el HSM y crear un certificado de cliente denominado ssl-client.crt. El certificado es válido durante 5 años (1826 días).

$ openssl x509 -req -days 1826 -in <ssl-client.csr> -CA <mtls_ca_root_1.crt> -CAkey <mtls_ca_root_1.key> -CAcreateserial -out <ssl-client.crt>
ejemplo – Crear una cadena de certificados del cliente

Use el siguiente comando para combinar el certificado de cliente y el certificado raíz que creamos y registramos en Crear y registrar un anclaje de veracidad en el HSM y crear una cadena de certificados del cliente denominada ssl-client.pem, que se usará la configuración en el paso siguiente.

$ cat <ssl-client.crt> <mtls_ca_root_1.crt> > <ssl-client.pem>
nota

Si registró certificados intermedios en Crear y registrar un anclaje de veracidad en el HSM como anclaje de veracidad, procure combinar el certificado de cliente con toda la cadena de certificados para crear una cadena de certificados del cliente.

Configurar mTLS para Client SDK 5

Use cualquiera de las herramientas de configuración de Client SDK5 para habilitar la TLS mutua proporcionando la ruta de clave de cliente y la ruta de cadena de certificados del cliente correctas. Para obtener más información sobre la herramienta de configuración para Client SDK 5, consulte Herramienta de configuración de Client SDK 5 de AWS CloudHSM.

PKCS #11 library
Cómo usar un certificado y una clave personalizados para la autenticación mutua cliente-servidor de TLS con Client SDK 5 en Linux
  1. Copie la clave y el certificado en el directorio adecuado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc $ sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    $ sudo /opt/cloudhsm/bin/configure-pkcs11 \ --client-cert-hsm-tls-file /opt/cloudhsm/etc/ssl-client.pem \ --client-key-hsm-tls-file /opt/cloudhsm/etc/ssl-client.key
Cómo usar un certificado y una clave personalizados para la autenticación mutua de cliente al HSM con Client SDK 5 en Windows
  1. Copie la clave y el certificado en el directorio adecuado.

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. Con un intérprete de PowerShell, utilice la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" ` --client-cert-hsm-tls-file C:\ProgramData\Amazon\CloudHSM\ssl-client.pem ` --client-key-hsm-tls-file C:\ProgramData\Amazon\CloudHSM\ssl-client.key
OpenSSL Dynamic Engine
Cómo usar un certificado y una clave personalizados para la autenticación mutua cliente-servidor de TLS con Client SDK 5 en Linux
  1. Copie la clave y el certificado en el directorio adecuado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    $ sudo /opt/cloudhsm/bin/configure-dyn \ --client-cert-hsm-tls-file /opt/cloudhsm/etc/ssl-client.pem \ --client-key-hsm-tls-file /opt/cloudhsm/etc/ssl-client.key
JCE provider
Cómo usar un certificado y una clave personalizados para la autenticación mutua cliente-servidor de TLS con Client SDK 5 en Linux
  1. Copie la clave y el certificado en el directorio adecuado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    $ sudo /opt/cloudhsm/bin/configure-jce \ --client-cert-hsm-tls-file /opt/cloudhsm/etc/ssl-client.pem \ --client-key-hsm-tls-file /opt/cloudhsm/etc/ssl-client.key
Cómo usar un certificado y una clave personalizados para la autenticación mutua de cliente al HSM con Client SDK 5 en Windows
  1. Copie la clave y el certificado en el directorio adecuado.

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. Con un intérprete de PowerShell, utilice la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" ` --client-cert-hsm-tls-file C:\ProgramData\Amazon\CloudHSM\ssl-client.pem ` --client-key-hsm-tls-file C:\ProgramData\Amazon\CloudHSM\ssl-client.key
CloudHSM CLI
Cómo usar un certificado y una clave personalizados para la autenticación mutua cliente-servidor de TLS con Client SDK 5 en Linux
  1. Copie la clave y el certificado en el directorio adecuado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    $ sudo /opt/cloudhsm/bin/configure-cli \ --client-cert-hsm-tls-file /opt/cloudhsm/etc/ssl-client.pem \ --client-key-hsm-tls-file /opt/cloudhsm/etc/ssl-client.key
Cómo usar un certificado y una clave personalizados para la autenticación mutua de cliente al HSM con Client SDK 5 en Windows
  1. Copie la clave y el certificado en el directorio adecuado.

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. Con un intérprete de PowerShell, utilice la herramienta de configuración para especificar ssl-client.pem y ssl-client.key.

    & "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" ` --client-cert-hsm-tls-file C:\ProgramData\Amazon\CloudHSM\ssl-client.pem ` --client-key-hsm-tls-file C:\ProgramData\Amazon\CloudHSM\ssl-client.key

Paso 3. Establecer la aplicación de la mTLS para el AWS CloudHSM

Después de configurar con cualquiera de las herramientas de configuración de Client SDK 5, la conexión entre el cliente y el AWS CloudHSM será TLS mutua en el clúster. Sin embargo, al eliminar la ruta de claves privada y la ruta de la cadena de certificados del cliente del archivo de configuración, la conexión volverá a ser una TLS normal. Puede usar la CLI de CloudHSM para configurar la aplicación de mtls en el clúster siguiendo estos pasos:

  1. Use el siguiente comando para iniciar la CLI de CloudHSM:

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. Inicie sesión en la CLI de CloudHSM como administrador.

    aws-cloudhsm > login --username admin --role admin Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } }
    nota

    1. Corrobore haber configurado la CLI de CloudHSM e iníciela con una conexión mTLS.

    2. Debe iniciar sesión como usuario administrador predeterminado con el nombre de usuario establecido como admin antes de configurar la aplicación de mTLS.

  3. Use el comando Establecer el nivel de cumplimiento de mTLS con la CLI de CloudHSM para configurar la aplicación. Para obtener más información, consulte el siguiente ejemplo o utilice el comando help cluster mtls set-enforcement.

    ejemplo — Configure la aplicación de mTLS con clústeres del AWS CloudHSM

    En el siguiente ejemplo, se muestra cómo se usa el comando cluster mtls set-enforcement en la CLI de CloudHSM para establecer la aplicación de mTLS con el HSM. Para usar este comando, el administrador con nombre usuario como administrador debe iniciar sesión en el HSM.

    aws-cloudhsm > cluster mtls set-enforcement --level cluster { "error_code": 0, "data": { "message": "Mtls enforcement level set to Cluster successfully" } }
    aviso

    Después de aplicar el uso de mTLS en el clúster, se eliminarán todas las conexiones existentes que no sean mTLS y solo podrá conectarse al clúster con certificados mTLS.