Etapa 2: Gerar ou importar uma chave privada e um certificado SSL/TLS - AWS CloudHSM

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Etapa 2: Gerar ou importar uma chave privada e um certificado SSL/TLS

Para habilitar o HTTPS, o servidor web Tomcat precisa de um certificado SSL/TLS e de uma chave privada correspondente. Para usar o servidor web SSL/TLS offload com AWS CloudHSM, você deve armazenar a chave privada em um HSM no seu cluster. AWS CloudHSM

nota

Se você ainda não tem uma chave privada e um certificado correspondente, gere uma chave privada em um HSM. Em seguida, use a chave privada para criar uma solicitação de assinatura de certificado (CSR), que é então assinada para produzir um certificadoSSL/TLS.

Você cria um AWS CloudHSM KeyStore arquivo local que contém uma referência à sua chave privada no HSM e no certificado associado. Seu servidor web usa o AWS CloudHSM KeyStore arquivo para identificar a chave privada no HSM durante o descarregamento de SSL/TLS.

Gerar uma chave privada

Esta seção mostra como gerar um par de chaves usando o KeyTool do JDK. Depois de gerar um par de chaves dentro do HSM, você pode exportá-lo como um KeyStore arquivo e gerar o certificado correspondente.

Dependendo do seu caso de uso, você pode gerar um RSA ou um par de chaves EC. As etapas a seguir mostram como gerar um par de chaves RSA.

Use o genkeypair comando in KeyTool para gerar um par de chaves RSA
  1. Depois de substituir os dados<VARIABLES> abaixo por seus dados específicos, use o comando a seguir para gerar um arquivo de armazenamento de chaves chamado jsse_keystore.keystore, que terá uma referência de sua chave privada no 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>: o caminho pelo qual você deseja gerar seu arquivo de armazenamento de chaves.

    • <UNIQUE ALIAS FOR KEYS>: isto é usado para identificar de forma exclusiva sua chave no HSM. Esse alias será definido como o atributo RÓTULO da chave.

    • <KEY PASSWORD>: armazenamos a referência à sua chave no arquivo de armazenamento de chaves local, e essa senha protege essa referência local.

    • <KEYSTORE PASSWORD>: essa é a senha do seu arquivo de armazenamento de chaves local.

    • <JSSE KEYSTORE NAME>: nome do arquivo Keystore.

    • <CERT DOMAIN NAME>: X.500 Nome atribuído.

    • <KEY ALGORITHM>: algoritmo de chave para gerar o par de chaves (por exemplo, RSA e EC).

    • <KEY SIZE>: tamanho da chave para gerar o par de chaves (por exemplo, 2048, 3072 e 4096).

    • <SIGN ALGORITHM>: tamanho da chave para gerar o par de chaves (por exemplo, SHA1withRSA, SHA224withRSA, SHA256withRSA, SHA384withRSA e SHA512withRSA).

  2. Para confirmar se o comando foi bem-sucedido, digite o comando a seguir e verifique se você gerou com êxito um par de chaves RSA.

    $ ls <PATH>/<JSSE KEYSTORE NAME>.keystore

Gere um certificado autoassinado

Depois de gerar uma chave privada junto com o arquivo de armazenamento de chaves, você pode usar esse arquivo para gerar uma solicitação de assinatura de certificado (CSR) e um certificado.

Em um ambiente de produção, geralmente usa-se uma autoridade de certificação (CA) para criar um certificado de uma CSR. Não é necessária uma CA para um ambiente de teste. Se você usa uma CA, envie o arquivo CSR para eles e use o certificado SSL/TLS assinado que eles fornecem em seu servidor web para HTTPS.

Como alternativa ao uso de uma CA, você pode usar o KeyTool para criar um certificado autoassinado. Os certificados autoassinados não são confiáveis para os navegadores e não devem ser usados em ambientes de produção. Eles podem ser usados em ambientes de teste.

Atenção

Os certificados autoassinados devem ser usados apenas em um ambiente de teste. Para um ambiente de produção, use um método mais seguro, como uma autoridade de certificação, para criar um certificado.

Tópicos
    Gere um certificado
    1. Obtenha uma cópia do arquivo de armazenamento de chaves gerado em uma etapa anterior.

    2. Execute o comando a seguir para usar o KeyTool para criar uma solicitação de assinatura 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

      O arquivo de saída da solicitação de assinatura do certificado é certreq.csr.

    Assine um certificado
    • Depois de substituir os dados <VARIABLES> abaixo por seus dados específicos, execute o comando a seguir para assinar sua CSR com sua chave privada em seu HSM. Isso cria um certificado autoassinado.

      $ 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 é o certificado assinado que usa a chave privada do alias.

    Importar um certificado no Keystore
    • Depois de substituir os dados<VARIABLES> abaixo pelos seus dados específicos, execute o comando a seguir para importar um certificado assinado como um certificado confiável. Essa etapa armazenará o certificado na entrada do keystore identificada pelo 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>
    Converta um certificado em um PEM
    • Execute o comando a seguir para converter o arquivo de certificado assinado (.crt) em um PEM. O arquivo PEM será usado para enviar a solicitação do cliente http.

      $ openssl x509 -inform der -in certificate.crt -out certificate.pem

    Depois de concluir estas etapas, vá para a Etapa 3: Configure o servidor web.