Criando KeyStore

De BIS Wiki
Ir para navegação Ir para pesquisar

A KeyStore é uma maneira que o Java oferece para proteger e encapsular certificados digitais. Dentro de uma KeyStore é possível armazenar não só um certificado, mas cadeias de certificados completas conforme a necessidade.

O BISERP usa KeyStore para encapsular os certificados digitais dos WebServices da NFp e NFe por exemplo. A partir dos certificados encapsulados dentro da KeyStore é possível dizer ao Java que esses certificados são confiáveis que podemos aceitar a comunicação com o servidor que se identificar através destes certificados.

Criando uma KeyStore

Antes de mais nada, para criar uma KeyStore é preciso ter o certificado digital e o java instalado. Para criar a keystore devemos utilizar o utilitário keytool, presente na pasta bin do Java. Como mostra o templo abaixo:

keytool -import -alias <alias> -keystore <keystore> -file <certificado>

O comando deve ser completado da seguinte forma:

  • <alias>: Alias é o nome que este certificado receberá dentro do keystore. Quando o conteúdo da keystore for apresentado, esse alias será mostrado para identificar este certificado (dentre os outros que houver dentro da KeyStore.
  • <keystore>: Arquivo da keystore em que queremos importar o certificado. Se o arquivo já existir, este certificado será incorporado aos que já existem dentro da keystore, se o arquivo não existir, será criada uma nova keystore com apenas este certificado. Podendo mais tarde usar a mesma keystore para somar outros certificados.
  • <certificado>: Certificado a ser importado para dentro da KeyStore. Arquivo ".cer"

Um exemplo de criação de KeyStore usado durante o desenvolvimento do WebService da NFp é:

keytool -import -alias NFp.SP -keystore x:\nfpkeystore.jks -file x:\nfp.fazenda.sp.gov.br.cer

Sendo que o certificado foi obtido através do endereço do web (como webservices, email, ou outros endereços https: veja Obtendo Certificado a Partir de Endereço HTTPS) e esta keystore é usada para a configuração de conexão SSL, como certificado de CA confiável. Caso contrário o Java não permite que a conexão seja realizada.

Ao confirmar a linha de comando acima a será solicitada uma senha. Se o arquivo estiver sendo criado, será solicitado uma senha de confirmação antes de criar a KeyStore. Caso o arquivo já exista, ela será validada para ter acesso a KeyStore existente. Depois de processar e exibir as informações do certificado na tela, será necessário digitar "sim" para prosseguir e confirmar a operação.

Feito isso a KeyStore está pronta para ser usada na aplicação Java!

Note 64.png
Senhas da KeyStore
As keystore criadas com certificados públicos, apenas para aceitação da comunicação do java, como os de webservices, javamail, etc.. Recomendamos deixar a senha padrão de desenvolvimento "BISERP" em maiúsculo. Afinal o conhecimento da senha da keystore só permite que se adicione ou remova certificados dela. Colocar novos certificados para confiança não influenciam no software, e tira-las simplesmente fará com que pare de funcionar.

Inspecionando uma KeyStore

Para visualizar o conteúdo de uma KeyStore é pode-se utilizar o seguinte comando:

keytool -keystore <keystore> -list

Para uma descrição detalhada dos certificados utilize o comando:

keytool -keystore <keystore> -list -v

Para mais detalhes consulte a ajuda do comando list do keytool:

keytool -list -help

Excluindo Certificados da KeyStore

Para remover um certificado da KeyStore é necessário conhecer o alias com a qual ele foi salvo. Você pode listar os certificados existentes com os comandos acima.

Para excluir o alias desejado utilize o comando:

keytool -keystore <keystore> -delete -alias <alias>

Obtendo Certificado a Partir de Endereço HTTPS

Obter certificados a partir de endereços HTTPS é útil quando precisamos confirmar para nossa aplicação que determinada CA é confiável e permitir que o Java negocie uma conexão SSL com o servidor. Um dos casos em que uma conexão HTTPS é muito utilizada em aplicação é o acesso de WebServices. Como no exemplo que seguiremos, do WebService da Receita da Fazenda de SP.

O primeiro passo é entrar através de um Browser (aqui utilizaremos o Chrome, outros browser podem mostrar o certificado de outra forma) no endereço HTTPS desejado. O browser deve mostrar um cadeado para confirmar que o site está protegido por algum tipo de encriptação, clique no cadeado para maiores informações. No nosso exemplo, podemos ver que quem certifica o servidor da fazenda de SP é a VeriSign.

CriandoKeyStore1.jpg


Stop 256.png
Antivirus
Cuidado com a utilização de Antivirus que fazem a verificação de certificados SSL. Alguns deles, como o Bit Defender, substitui o certificado exibido no Browser por um próprio, tornando-se ele a certificadora de autenticidade do servidor. Se exportar o certificado do Bit Defender ao invés do certificado real do servidor, sua aplicação não funciona depois pois o que constará na tua KeyStore será o certificado do Antivirus.

Clique em "Informações do Certificado" para abrir a tela de detalhes certificado, como exibida abaixo:

CriandoKeyStore2.jpg
CriandoKeyStore3.jpg


Com a tela aberta, clique na aba "Detalhes" e depois no botão "Copiar para Arquivo" para que o certificado seja exportado para um arquivo. No Wizard que aparece, siga as instruções das imagens abaixo:

CriandoKeyStore4.jpg
CriandoKeyStore5.jpg
CriandoKeyStore6.jpg
CriandoKeyStore7.jpg

se tudo correu bem o certificado foi exportado com sucesso para a pasta escolhida. Se clicar duas vezes no arquivo, o certificado deve mostrar a mesma tela que o browser mostrou quando solicitamos mais informações. Esse arquivo poderá agora ser usado para compor uma KeyStore e ser utilizado na aplicação Java.