7.3. 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 comandokeytoolestão fora do tópico desta documentação.
Procedimento 7.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.keystorecom o aliasjbossno seu diretório atual.A seguinte tabela descreve os parâmetros usados no comando keytool:keytool -genkey -alias jboss -keyalg RSA -keystore server.keystore -storepass mykeystorepass --dname "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,S=NC,C=US"
keytool -genkey -alias jboss -keyalg RSA -keystore server.keystore -storepass mykeystorepass --dname "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,S=NC,C=US"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand Parâmetro Descrição -genkeyO comando keytoolpara gerar um par de chave contendo uma chave pública e privada.-aliasO alias para o keystore. Este valor é arbritário, porém o alias jbossé o default usado pelo servidor do JBoss Web.-keyalgO algoritmo de geração par da chave. Neste caso ele é o RSA.-keystoreO 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.-storepassEssa senha é usada para autenticar ao keystore de forma que a chave pode ser lida. A senha deve ser pelo menos de 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.-keypassEsta é a senha para a chave atual.Nota
Devido à limitação da implementação, ela deve ser a mesma senha à senha do store.--dnameA 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", oCNserá "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
-storepassna 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
-keypassna 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.keystoreconterá 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
keytool -list -keystore server.keystoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow A senha é solicitada com o objetivo de autenticar o 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
keytool -certreq -keyalg RSA -alias jboss -keystore server.keystore -file certreq.csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow A senha é solicitada com o objetivo de autenticar o keystore. O comandokeytoolentão cria um novo certificado assinando a solicitação chamadacertreq.csrno seguinte diretório de trabalho.Teste o certificado recentemente gerado.
Teste os conteúdos do certificado usando o seguinte comando.openssl req -in certreq.csr -noout -text
openssl req -in certreq.csr -noout -textCopy to Clipboard Copied! Toggle word wrap Toggle overflow Os detalhes do certificado são apresentados.Opcional: Submeta o 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 keysotre que você criou na etapa 1, conforme abaixo:keytool -export -alias jboss -keystore server.keystore -file server.crt
keytool -export -alias jboss -keystore server.keystore -file server.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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.caouserver.crtpelo 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 -keystore server.keystore -alias intermediateCA -file intermediate.caCopy to Clipboard Copied! Toggle word wrap Toggle overflow keytool -import -alias jboss -keystore server.keystore -file server.crt
keytool -import -alias jboss -keystore server.keystore -file server.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
keytool -list -keystore server.keystoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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.