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.