8.4. Criação de uma Chave de Criptografia SSL e Certificado
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 comandokeytool
estão fora do tópico desta documentação.
Procedimento 8.2. Criação de uma Chave de Criptografia SSL e Certificado
Geração de um keystore com as chaves pública e privada.
Execute o seguinte comando para gerar um keystore nomeadoserver.keystore
com o aliasjboss
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", oCN
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 arquivoserver.keystore
conterá a chave única com o aliasjboss
.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 chamadajboss
). Perceba o tipo da chavejboss
, que ékeyEntry
. Isto indica que o keystore contém ambas entradas privada e pública para esta chave.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 comandokeytool
então cria um novo certificado assinando a solicitação chamadacertreq.csr
no seguinte diretório de trabalho.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.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.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, nomeadoserver.crt
, é criado no diretório de trabalho atual.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 ointermediate.ca
ouserver.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
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
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.