Configurar o TLS mútuo entre o cliente e o AWS CloudHSM (recomendado) - AWS CloudHSM

Configurar o TLS mútuo entre o cliente e o AWS CloudHSM (recomendado)

Os tópicos a seguir descrevem as etapas que você deve concluir para habilitar o TLS mútuo (mTLS) entre o cliente e o AWS CloudHSM. Atualmente, esse recurso está disponível exclusivamente no hsm2m.medium. Para obter mais informações sobre o tipo de HSM, consulte Modos de cluster do AWS CloudHSM.

Etapa 1. Criar e registrar uma âncora de confiança no HSM

Uma âncora de confiança deve ser criada e registrada no HSM antes de ativar o mTLS. Este é um processo em duas etapas:

Criar uma chave privada e um certificado raiz autoassinado

nota

Para um cluster de produção, a chave deve ser criada com segurança usando uma fonte confiável de aleatoriedade. Recomendamos que você use um HSM fora do local e off-line ou o equivalente. Armazene a chave com segurança.

Durante a fase de desenvolvimento e teste, você pode usar qualquer ferramenta conveniente (como o OpenSSL) para criar a chave e autoassinar um certificado raiz. Você precisará da chave e do certificado raiz para assinar o certificado do cliente no habilitar mTLS para AWS CloudHSM.

Os exemplos a seguir mostram como criar uma chave privada e um certificado raiz autoassinado com o OpenSSL.

exemplo Crie uma chave privada com o OpenSSL

Use o comando a seguir para criar uma chave de RSA de 4096 bits criptografada com o algoritmo AES-256. Para usar esse exemplo, substitua <mtls_ca_root_1.key> pelo nome do arquivo onde você deseja armazenar a chave.

$ 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:
exemplo – Criar um certificado raiz autoassinado com o OpenSSL

Use o comando a seguir para criar um certificado raiz autoassinado chamado mtls_ca_root_1.crt da chave privada que você acabou de criar. O certificado é válido por 25 anos (9130 dias). Leia as instruções na tela e siga os avisos.

$ 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 a âncora de confiança no HSM

Depois de criar um certificado raiz autoassinado, o administrador deve registrá-lo como âncora de confiança no cluster do AWS CloudHSM.

Para registrar uma âncora de confiança no HSM
  1. Use o comando a seguir para iniciar CloudHSM CLI:

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. Usando a CLI do CloudHSM, faça login como administrador.

    aws-cloudhsm > login --username admin --role admin Enter password: { "error_code": 0, "data": { "username": "admin", "role": "admin" } }
  3. Use o comando Registrar uma âncora de confiança com a CLI do CloudHSM para registrar a âncora de confiança. Para obter mais informações, consulte o exemplo a seguir ou use o comando help cluster mtls register-trust-anchor.

exemplo – Registrar uma âncora de confiança com o cluster do AWS CloudHSM

O exemplo a seguir mostra como usar o comando cluster mtls register-trust-anchor na CLI do CloudHSM para registrar uma âncora de confiança no HSM. Para usar esse comando, o CO deve estar conectado no HSM. Substitua esses valores pelos seus próprios:

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

O AWS CloudHSM é compatível com o registro de certificados intermediários como âncora de confiança. Nesses casos, todo o arquivo da cadeia de certificados codificado pelo PEM precisa ser registrado no HSM, com os certificados em ordem hierárquica.

O AWS CloudHSM é compatível com uma cadeia de certificados de 6980 bytes.

Depois de registrar com êxito a âncora de confiança, é possível executar o comando cluster mtls list-trust-anchors para verificar as âncoras de confiança registradas atuais, conforme mostrado abaixo:

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

No máximo 2 (duas) âncoras de confiança podem ser registradas em instâncias hsm2m.medium.

Etapa 2. Habilitar o mTLS para AWS CloudHSM

Para habilitar o mTLS para AWS CloudHSM, é necessário criar uma chave privada e um certificado de cliente assinado pelo certificado raiz que geramos em Criar e registrar uma âncora de confiança no HSM e, em seguida, usar qualquer ferramenta de configuração do Client SDK 5 para configurar o caminho da chave privada e o caminho da cadeia de certificados do cliente.

Criar uma chave privada e uma cadeia de certificados de clientes

exemplo Crie uma chave privada com o OpenSSL

Use o comando a seguir para criar uma chave de RSA de 4096 bits criptografada com o algoritmo AES-256. Para usar esse exemplo, substitua <ssl-client.key> pelo nome do arquivo onde você deseja armazenar a chave.

$ 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:
exemplo – Gere uma Certificate Signing Request (CSR – Solicitação de assinatura de certificado).

Use o comando a seguir para gerar uma Certificate Signing Request (CSR – Solicitação de assinatura de certificado) com a chave privada que você acabou de criar. Leia as instruções na tela e siga os avisos.

$ 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 []:
exemplo – Assinar a CSR com o certificado raiz

Use o comando a seguir para assinar a CSR com o certificado raiz que criamos e registramos em Criar e registrar uma âncora de confiança no HSM e criar um certificado de cliente chamado ssl-client.crt. O certificado é válido por 5 anos (1826 dias).

$ 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>
exemplo – Criar uma cadeia de certificado de cliente

Use o comando a seguir para combinar o certificado do cliente e o certificado raiz que criamos e registramos em Criar e registrar uma âncora de confiança no HSM e criar uma cadeia de certificados do cliente chamada ssl-client.pem, que será usada para configurar na próxima etapa.

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

Se você registrou certificados intermediários em Criar e registrar uma âncora de confiança no HSM como âncora de confiança, combine o certificado do cliente com toda a cadeia de certificados para criar uma cadeia de certificados do cliente.

Configurar mTLS para Client SDK 5

Use qualquer ferramenta de configuração do Client SDK 5 para habilitar o TLS mútuo fornecendo o caminho correto da chave do cliente e o caminho da cadeia de certificados do cliente. Para obter mais informações sobre a ferramenta de configuração para o Client SDK 5, consulte Ferramenta de configuração do Client SDK 5 do AWS CloudHSM.

PKCS #11 library
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Linux
  1. Copie a chave e o certificado para o diretório apropriado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc $ sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use a ferramenta de configuração para especificar ssl-client.pem e 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
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Windows
  1. Copie a chave e o certificado para o diretório apropriado.

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. Com um intérprete PowerShell, use a ferramenta de configuração para especificar ssl-client.pem e 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
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Linux
  1. Copie a chave e o certificado para o diretório apropriado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use a ferramenta de configuração para especificar ssl-client.pem e 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
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Linux
  1. Copie a chave e o certificado para o diretório apropriado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use a ferramenta de configuração para especificar ssl-client.pem e 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
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Windows
  1. Copie a chave e o certificado para o diretório apropriado.

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. Com um intérprete PowerShell, use a ferramenta de configuração para especificar ssl-client.pem e 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
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Linux
  1. Copie a chave e o certificado para o diretório apropriado.

    $ sudo cp ssl-client.pem /opt/cloudhsm/etc sudo cp ssl-client.key /opt/cloudhsm/etc
  2. Use a ferramenta de configuração para especificar ssl-client.pem e 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
Para usar um certificado e uma chave personalizados para autenticação mútua cliente TLS e HSM com o Client SDK 5 no Windows
  1. Copie a chave e o certificado para o diretório apropriado.

    cp ssl-client.pem C:\ProgramData\Amazon\CloudHSM\ssl-client.pem cp ssl-client.key C:\ProgramData\Amazon\CloudHSM\ssl-client.key
  2. Com um intérprete PowerShell, use a ferramenta de configuração para especificar ssl-client.pem e 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

Etapa 3. Definir a imposição do mTLS para AWS CloudHSM

Depois de configurar com qualquer uma das ferramentas de configuração do Client SDK 5, a conexão entre o cliente e o AWS CloudHSM será TLS mútuo no cluster. No entanto, remover o caminho da chave privada e o caminho da cadeia de certificados do cliente do arquivo de configuração transformará a conexão em TLS normal novamente. É possível usar a CLI do CloudHSM para definir a imposição de mTLS no cluster concluindo as seguintes etapas:

  1. Use o comando a seguir para iniciar CloudHSM CLI:

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. Usando a CLI do CloudHSM, faça login como administrador.

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

    1. Verifique se você configurou a CLI do CloudHSM e inicie-a em uma conexão mTLS.

    2. É preciso estar logado como usuário administrador padrão com o nome de usuário administrador antes de definir a imposição do mTLS.

  3. Use o comando Definir o nível de imposição do mTLS com a CLI do CloudHSM para definir a imposição. Para obter mais informações, consulte o exemplo a seguir ou use o comando help cluster mtls set-enforcement.

    exemplo – Definir a imposição do mTLS com cluster AWS CloudHSM

    O exemplo a seguir mostra como usar o comando cluster mtls set-enforcement na CLI do CloudHSM a fim de definir a imposição de mTLS com o HSM. Para usar esse comando, o administrador com nome de usuário admin deve estar conectado no HSM.

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

    Depois de impor o uso de mTLS no cluster, todas as conexões não MTLS existentes serão descartadas e a conexão com o cluster será possível apenas com certificados mTLS.