8.4. Criação de uma Chave de Criptografia SSL e Certificado

Você precisará de um certificado de criptografia assinado para uso de um SSL-encrypted HTTP connection (HTTPS - conexão HTTP criptografado SSL) assim como de outros tipos de comunicação SSL criptografada. Você pode comprar um certificado a partir do Certificate Authority (CA - Autoridade de Certificado), ou você pode usar um certificado autoassinado. Os certificados autoassinados não são considerados confiáveis por terceiros, mas são apropriados para propósitos de testes internos.
Este procedimento o habilita a criar o certificado autoassinado usando as utilidades que estão disponíveis no Red Hat Enterprise Linux.

Pré-requisitos

  • Você precisa da utilidade keytool, que é fornecida pela implantação do Java Development Kit. O OpenJDK no Red Hat Enterprise Linux instala este comando ao /usr/bin/keytool.
  • O entendimento da sintaxe e parâmetros do comando keytool. Este procedimento usa as instruções extremamente genéricas, uma vez que a discussão futura das especificações dos certificados ou do comando keytool estão fora do tópico desta documentação.

Procedimento 8.2. Criação de uma Chave de Criptografia SSL e Certificado

  1. Geração de um keystore com as chaves pública e privada.

    Execute o seguinte comando para gerar um keystore nomeado server.keystore com o alias jboss no seu diretório atual.
    keytool -genkeypair -alias jboss -keyalg RSA -keystore server.keystore -storepass mykeystorepass --dname "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,S=NC,C=US"
    A seguinte tabela descreve os parâmetros usados no comando keytool:
    Parâmetro Descrição
    -genkeypair O comando keytool para gerar um par de chave contendo uma chave pública e privada.
    -alias O alias para o keystore. Este valor é arbitrário, porém o alias jboss é o default usado pelo servidor pelo servidor do JBoss Web.
    -keyalg O algoritmo de geração par da chave. Neste caso ele é o RSA.
    -keystore O nome e a localização do arquivo keystore. A localização default é o diretório atual. O nome que você escolher é arbitrário. Neste caso, o arquivo será nomeado server.keystore.
    -storepass Essa senha é usada para autenticação ao keystore de forma que a chave pode ser lida. A senha deve ter pelo menos 6 caracteres e deve ser fornecida quando o keystore é acessado. Neste caso, nós usamos o mykeystorepass. Caso você omitir este parâmetro, você será solicitado a inserir o mesmo quando você executar o comando.
    -keypass
    Esta é a senha para a chave atual.

    Nota

    Devido à limitação da implementação, ela deve ser a mesma senha à senha do store.
    --dname A sequência cotada descrevendo o nome distinguido para a chave, por exemplo: "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,C=US". Essa sequência é a concatenação dos seguintes componentes:
    • CN - O nome comum ou nome do host. Caso o hostname seja "jsmith.mycompany.com", o CN será "jsmith".
    • OU - A unidade da organização, por exemplo: "Engineering"
    • O - O nome da organização, por exemplo "mycompany.com".
    • L - A localidade, por exemplo: "Raleigh" ou "London"
    • S - O estado ou província, por exemplo: "NC". Este parâmetro é opcional.
    • C - O código de suas letras do país, por exemplo: "US" ou "UK",
    Quando você executar o comando acima, você será solicitado a seguinte informação:
    • Caso não tenha usado o parâmetro -storepass na linha de comando, você será solicitado a inserir a senha keystore. Reinicie a nova senha na próxima solicitação.
    • Caso não tenha usado o parâmetro -keypass na linha de comando, você será solicitado a inserir a senha chave. Pressione Enter para configurá-la no mesmo valor ao da senha keystore.
    Quando o comando completar, o arquivo server.keystore conterá a chave única com o alias jboss.
  2. Verifique a chave.

    Verifique se a chave funciona de forma apropriada usando o seguinte comando:
    keytool -list -keystore server.keystore
    Você será solicitado a fornecer a senha keystore. Os conteúdos do keystore são exibidos (neste caso, uma chave única chamada jboss). Perceba o tipo da chave jboss, que é keyEntry. Isto indica que o keystore contém ambas entradas privada e pública para esta chave.
  3. Geração de um certificado assinando uma solicitação.

    Execute o seguinte comando para gerar um certificado assinando solicitação usando a chave pública e privada a partir do keystore que você criou na etapa 1.
    keytool -certreq -keyalg RSA -alias jboss -keystore server.keystore -file certreq.csr
    Você é solicitado pela a senha com o objetivo de autenticar o keystore. O comando keytool então cria um novo certificado assinando a solicitação chamada certreq.csr no seguinte diretório de trabalho.
  4. Teste a solicitação da assinatura do certificado recentemente gerado.

    Teste os conteúdos do certificado usando o seguinte comando.
    openssl req -in certreq.csr -noout -text
    Os detalhes do certificado são apresentados.
  5. Opcional: Submeta a solicitação de assinatura de seu certificado a um Certificate Authority (CA - Autoridade de Certificado).

    O Certificate Authority (CA) pode autenticar o seu certificado de forma que isto é considerado de confiança por clientes de terceiros. O CA fornece um certificado assinado e opcionalmente um ou mais certificados intermediários.
  6. Opcional: Exporte um certificado autoassinado a partir do keystore.

    Caso você precisar disto para testes ou propósitos internos, você pode usar um certificado autoassinado. Você pode expor um do keystore que você criou na etapa 1, conforme abaixo:
    keytool -export -alias jboss -keystore server.keystore -file server.crt
    Você será solicitado a fornecer a senha com o objetivo de autenticar o keystore. O certificado autoassinado, nomeado server.crt, é criado no diretório de trabalho atual.
  7. Importe o certificado assinado, juntamente com quaisquer certificados intermediários.

    Importe cada certificado na ordem que você está instruído pelo CA. Para cada certificado a ser importado, substitua o intermediate.ca ou server.crt pelo nome do arquivo atual. Caso os seus certificados não forem fornecidos como arquivos separados, crie um arquivo separado para cada certificado e cole os seus conteúdos no arquivo.

    Nota

    O seu certificado assinado e chaves do certificado são bens de valor. Tenha cuidado de como transportá-los entre os servidores.
    keytool -import -keystore server.keystore -alias intermediateCA -file intermediate.ca
    keytool -import -alias jboss -keystore server.keystore -file server.crt
  8. Teste se seus certificados importaram com êxito.

    Execute o seguinte comando e insira a senha keystore quando solicitada. Os conteúdos de seu keystore são exibidos e os certificados fazem parte da lista.
    keytool -list -keystore server.keystore
Resultado

O seu certificado assinado está agora incluído no seu keystore e está pronto para ser usado para criptografar as conexões SSL, incluindo as comunicações do servidor da web HTTPS.