Domine o Keytool: 17 Comandos Essenciais para Desenvolvedores e Administradores

O Keytool é um programa de linha de comandos que facilita a gestão e o armazenamento de chaves criptográficas e certificados digitais.

Se o seu sistema tiver o Java instalado, poderá utilizar o comando keytool para diversas operações, como importar certificados de Autoridades de Certificação (CA), listar os certificados existentes, gerar certificados autoassinados, guardar palavras-passe e chaves públicas/privadas, e muito mais.

Parece complicado? Não se preocupe; vou explicar de forma simples e clara enquanto avança na leitura.

Para este guia, utilizei o Linux como ambiente de teste para os comandos, oferecendo exemplos práticos para uma melhor compreensão.

Importa referir que os comandos Keytool são igualmente utilizáveis em sistemas Windows e macOS.

O que é o Comando Keytool?

O Keytool é, essencialmente, uma ferramenta de gestão de chaves e certificados. Permite o armazenamento de pares de chaves pública/privada, que são frequentemente utilizados para confirmar e autenticar acessos a diversos serviços.

Dado o contexto deste artigo, é razoável assumir que este comando é utilizado principalmente por administradores de sistemas e programadores.

Embora seja verdade que o comando é frequentemente usado por esses profissionais, qualquer utilizador pode explorá-lo para armazenar palavras-passe e chaves secretas para fins de autenticação, encriptação e desencriptação. Se a sua curiosidade o impulsiona, recomendo que experimente no seu próprio sistema.

Se o conceito de chaves criptográficas lhe é novo, poderá ser útil consultar o nosso artigo sobre encriptação de dados antes de experimentar os comandos Keytool.

Além disso, analisar exemplos de comandos OpenSSL pode ser útil para entender as diferenças e as funcionalidades de cada ferramenta.

Criar um Certificado Autoassinado

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>

Ao contrário de um certificado SSL comercial, um certificado autoassinado destina-se exclusivamente a ambientes de desenvolvimento e teste, com o propósito de estabelecer uma comunicação segura.

Para gerar um certificado autoassinado, pode usar a sintaxe do comando keytool acima mencionada. Veja um exemplo de como funciona:

keytool -genkeypair -alias etechpt.com -keypass passforkeystore -validity 365 -storepass passforkeystore

O alias pode ter qualquer nome; usei “etechpt.com” como espaço reservado. A validade do certificado e a palavra-passe do Keystore podem ser personalizadas substituindo “passforkeystore” no comando.

Importa referir que apenas uma palavra-passe é suportada para KeyStores do tipo PKCS12. No entanto, este é um tipo de Keystore versátil, não específico do Java.

Caso necessite de palavras-passe diferentes para o Keystore e para o certificado, terá de instruir explicitamente o comando keytool a usar uma interface alternativa.

Pode consultar a documentação oficial para mais detalhes sobre este tema.

Após iniciar o processo de criação, o sistema solicitará informações adicionais para fins de autenticação. Eis um exemplo de como o processo se desenrola:

What is your first and last name?
  [Unknown]:  Ankush
What is the name of your organizational unit?
  [Unknown]:  etechpt.com
What is the name of your organization?
  [Unknown]:  etechpt.com
What is the name of your City or Locality?
  [Unknown]:  Bhubaneswar
What is the name of your State or Province?
  [Unknown]:  Odisha
What is the two-letter country code for this unit?
  [Unknown]:  91
Is CN=Ankush, OU=etechpt.com, O=etechpt.com, L=Bhubaneswar, ST=Odisha, C=91 correct?
  [no]:  yes

Criar um Keystore Java e um Par de Chaves

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650

Gerar um Keystore Java e Importar um Certificado

É necessário ter um certificado válido ou ter gerado um previamente. Assim que o tiver, poderá importá-lo e gerar um Keystore Java.

keytool -importcert -file test.crt -keystore truststore.jks -alias etechpt.com

Gerar um Par de Chaves para o Keystore Padrão com um Tópico

Pode gerar rapidamente um par de chaves (por exemplo, com o nome “ca”) utilizando o seguinte comando:

keytool -alias ca -dname CN=CA -genkeypair

Criar uma Cadeia de Certificados Assinados

Imagine que já criou os pares de chaves ca e ca1. Pode criar uma cadeia de certificados assinados onde “ca” assinará “ca1” com os seguintes comandos:

keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert

Pode expandir a cadeia com mais dois pares de chaves, “ca1” e “ca2”, onde “ca1” assinará “ca2”.

Importar um Certificado

Se pretender importar um certificado de um ficheiro, pode fazê-lo com o seguinte comando:

keystool -import -alias etechpt.com -file geekflareserver.cer

Gerar um Pedido de Assinatura de Certificado (CSR) para um Keystore Existente

Se já tiver um Keystore criado, pode gerar um CSR (Certificate Signing Request).

keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file etechpt.com.csr

Listar Certificados Armazenados num Keystore Java

Um Keystore pode conter várias entradas de certificados. Para verificar a lista de certificados no banco de dados “keystore.jks”, é necessário digitar o seguinte:

keytool -v -list -keystore keystore.jks

A saída deste comando terá um aspeto semelhante a este:

keytool -v -list -keystore keystore.jks
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: geekflarecert
Creation date: 16-Nov-2022
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Ankush, OU=Geek, O=etechpt.com, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=etechpt.com, L=Bhubaneswar, ST=od, C=91
Serial number: a0b9a99
Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032
Certificate fingerprints:
	 SHA1: 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE
	 SHA256: C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

Verificar o Conteúdo de um Único Certificado

Assumindo que já tem um certificado gerado, pode verificar mais informações sobre ele utilizando o seguinte comando:

keytool -v -printcert -file server.crt

Exibir Certificados num Armazenamento de Chaves Java

Pode listar todos os certificados de um banco de dados Keystore. Veja a aparência do comando:

keytool -v -list -keystore keystore.jks

Exibir um Armazenamento de Chaves Usando um Alias e um Armazenamento de Chaves

Se pretender verificar um Keystore utilizando o seu alias que definiu durante a sua criação, digite o seguinte:

keytool -v -list -keystore keystore.jks -alias geekflareserver

Listar Certificados no KeyStore

Se pretende verificar os certificados armazenados no Keystore padrão, utilize o comando:

keytool -list -storepass passforkeystore

Substitua “passforkeystore” pela palavra-passe que definiu.

Exibir Informações do Certificado

Se necessitar de verificar os detalhes de um único certificado, pode usar o seu alias sem ter de especificar a base de dados do keystore.

Veja como funciona:

keytool -list -v -alias etechpt.com -storepass passforkeystore

Exibir um Certificado no Formato PEM

PEM é um dos formatos mais comuns para certificados e chaves criptográficas. Se pretender verificar um certificado no formato PEM, introduza o seguinte:

keytool -v -printcert -file etechpt.com.crt -rfc

Alterar uma Palavra-Passe de um Java Keystore

Se já tiver definido uma palavra-passe para o Java Keystore, pode alterá-la utilizando o comando:

keytool -delete -alias etechpt.com -keystore keystore.jks

Eliminar um Certificado de um Java Keystore

Pode especificar o Java Keystore e o seu alias para o eliminar. Por exemplo:

keytool -delete -alias etechpt.com -keystore keystore.jks

Explorar o Comando e Obter Ajuda

O comando Keytool tem diversos argumentos e extensões para realizar diversas tarefas. Dependendo das suas necessidades específicas, poderá ou não ter de utilizar todas as opções.

Para se aprofundar nas opções de comando, pode sempre digitar:

keytool -help

Além disso, se estiver a utilizar um terminal Linux, recomendo que consulte a página “man” (manual) com este comando:

man keytool

Com o comando “man”, pode obter todos os detalhes necessários sobre o comando Keytool.

Aproveite ao máximo esta ferramenta e explore tudo o que pode fazer com ela!

Concluindo

Os caminhos dos arquivos e outras opções de personalização podem variar ligeiramente dependendo da plataforma que utiliza. Pode também consultar a documentação da Oracle para obter as opções padronizadas.

O Keytool é uma excelente ferramenta para uma variedade de tarefas. Experimente e descubra todas as suas potencialidades!

Pode também explorar alguns comandos do Linux para manter e otimizar os seus sistemas.