Definição
JKS para armazenamento de certificados: JKS (Java KeyStore) é um formato de arquivo usado por aplicações Java para guardar, de forma protegida por senha, certificados digitais e chaves privadas. Em sistemas fiscais, serve para armazenar o certificado A1 da empresa, usado para assinar XMLs de NF-e, NFS-e e outros documentos e para se autenticar nos webservices da SEFAZ.
Também conhecido como: JKS, Java KeyStore, Keystore Java, Arquivo .jks
O que é um arquivo JKS?
JKS é a sigla de Java KeyStore, que pode ser traduzido como "cofre de chaves do Java". Trata-se de um arquivo, geralmente com extensão .jks, que funciona como um pequeno cofre digital: dentro dele ficam guardados certificados e as chaves privadas correspondentes, e o acesso depende de senha.
Cada item guardado no cofre recebe um apelido, chamado alias. Assim, um mesmo arquivo JKS pode conter vários certificados, por exemplo, de diferentes empresas ou filiais, e o sistema escolhe qual usar pelo alias.
Para que serve o JKS na emissão de notas fiscais?
Para emitir documentos fiscais eletrônicos, o sistema precisa do certificado digital da empresa emissora. Ele é usado para assinar digitalmente o XML, garantindo autoria e integridade, e para estabelecer a conexão segura com os servidores da SEFAZ ou da prefeitura.
Sistemas escritos em Java, como muitos ERPs e emissores próprios, costumam carregar esse certificado a partir de um arquivo JKS, porque é um formato que a plataforma Java lê de forma nativa. Com isso, a aplicação abre o cofre, informa a senha e obtém a chave privada no momento da assinatura.
Qual a diferença entre JKS e arquivo PFX?
O certificado A1 da ICP-Brasil normalmente é entregue pela Autoridade Certificadora como um arquivo PFX (ou .p12), que segue o padrão internacional PKCS#12. Esse formato é reconhecido por praticamente qualquer linguagem e sistema operacional.
O JKS, por outro lado, é um formato próprio do ecossistema Java e pouco aceito fora dele. Na prática, os dois guardam o mesmo tipo de conteúdo, certificado e chave privada, mas o PFX é mais portátil. Versões mais recentes do Java passaram inclusive a adotar o PKCS#12 como formato padrão de keystore, e o JKS segue existindo principalmente por compatibilidade.
Como converter um certificado PFX em JKS, e vice-versa?
A própria instalação do Java traz uma ferramenta de linha de comando chamada keytool, que permite importar o conteúdo de um PFX para um JKS ou fazer o caminho inverso. Na conversão, é preciso informar a senha do arquivo de origem e definir a senha do arquivo de destino.
O caminho inverso é útil quando o certificado está guardado apenas em JKS e precisa ser enviado a um serviço que aceita PFX, como costuma ocorrer em APIs fiscais que recebem o certificado codificado em Base64. Sempre confira na documentação do serviço quais formatos são aceitos.
Qual a diferença entre keystore e truststore?
Os dois usam o mesmo formato de arquivo, mas têm funções diferentes. A keystore guarda o certificado e a chave privada da própria empresa, ou seja, aquilo que prova quem ela é. A truststore guarda certificados de autoridades em que o sistema confia, como os da cadeia da ICP-Brasil, para validar os servidores com que se conecta.
Em integrações fiscais feitas em Java, erros de conexão com a SEFAZ muitas vezes acontecem porque a truststore não contém a cadeia de certificação necessária, e não por problema no certificado da empresa.
Quais cuidados de segurança o JKS exige?
Quem tem o arquivo JKS e a senha consegue assinar documentos em nome da empresa. Por isso, o arquivo não deve ser enviado por e-mail, versionado em repositórios de código nem guardado junto com a senha em texto aberto.
Boas práticas incluem usar senhas fortes, restringir quem pode acessar o arquivo no servidor, guardar a senha em uma ferramenta de gerenciamento de segredos e manter cópia de segurança. Também é importante acompanhar a validade do certificado A1, que expira e precisa ser substituído dentro do cofre.
Exemplos de JKS para armazenamento de certificados
- Um ERP desenvolvido em Java carrega o certificado A1 de cada cliente a partir de um arquivo JKS, identificando cada empresa por um alias, antes de assinar o XML da NF-e.
- Uma equipe de desenvolvimento usa o keytool para converter o PFX recebido da Autoridade Certificadora em JKS, porque a biblioteca de emissão legada do sistema só aceita esse formato.
- Ao migrar a emissão para uma API fiscal que recebe o certificado em PFX codificado em Base64, uma software house exporta os certificados guardados em JKS de volta para PFX.
- Um sistema Java não consegue se conectar ao webservice da SEFAZ e o problema é resolvido ao importar os certificados da cadeia da ICP-Brasil para a truststore da aplicação.
Perguntas frequentes
Preciso de um arquivo JKS para emitir NF-e?
Não necessariamente. O JKS é apenas uma forma de armazenar o certificado, comum em sistemas Java. Outras linguagens e muitas APIs fiscais trabalham diretamente com o arquivo PFX entregue pela Autoridade Certificadora.
Converter PFX em JKS altera o certificado?
Não. A conversão apenas muda o "recipiente". O certificado, a chave privada, o titular e a data de validade continuam os mesmos.
O que acontece se eu esquecer a senha do JKS?
Sem a senha, não é possível extrair a chave privada do arquivo. Será preciso recorrer a uma cópia do PFX original com senha conhecida ou adquirir um novo certificado.
Um arquivo JKS pode guardar certificados de várias empresas?
Sim. Cada certificado fica registrado com um alias diferente, e o sistema escolhe qual usar conforme a empresa emissora do documento.
Atualizado em · Como produzimos este glossário
