Artigos sobre: Certificados Code Signing

Como assinar aplicativos .JAR (JAVA)

AVISO: Antes de iniciar o processo de assinatura, você deverá baixar e instalar o aplicativo SafeNet Authentication Client seguindo as instruções presentes neste link: SAFENET


Após ter instalado o aplicativo SafeNet, basta seguir as instruções a seguir:


1. Como assinar arquivos .jar usando o comando CLI Jarsigner


a) Crie um arquivo chamado eToken.cfg que contenha as seguintes linhas e salve-o na pasta bin do JDK

(por exemplo, C:\Arquivos de Programas (x86)\Java\jdk1.7.0_05\bin).

name=eToken

library=c:\WINDOWS\system32\eTPKCS11.dll


b) No Windows Explorer, navegue até a pasta JDK.


c) Na pasta JDK, pressione e segure Shiftclique com o botão direito do mouse na pasta bin e selecione Abrir janela de comando aqui.



d) Para visualizar o certificado de assinatura de código e o alias do certificado no token:

Conecte seu token e Execute o seguinte comando no prompt de comando:


keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg ./eToken.cfg


Enter keystore password: [Digite a Senha de Seu Token]

Exemplo de saída:

Keystore type: PKCS11

Keystore provider: SunPKCS11-eToken 

Your keystore contains 1 entry NOME DA EMPRESA

PrivateKeyEntry, 

Certificate fingerprint (SHA2): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

Neste exemplo, NOME DA EMPRESA é o alias do certificado que você usa para assinar arquivos .jar.


e) Para usar o certificado de assinatura de código no token e assinar o arquivo.jar, execute o seguinte comando no prompt de comando:

jarsigner -tsa http://timestamp.digicert.com -verbose -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg ./eToken.cfg "C:\caminho\para\arquivo.jar" "NOME DA EMPRESA"


f) Se o comando for executado com sucesso, você deverá ver algo semelhante à seguinte saída:

Enter Passphrase for keystore: 

adding: META-INF/7800FA4C.SF 

requesting a signature timestamp 

TSA location: http://timestamp.digicert.com 

adding: META-INF/7800FA4C.RSA 

signing: DigiCertTest.class 

jar signed.



POSSÍVEIS PROBLEMAS E SOLUÇÕES


O programa faz uma pausa e não solicita que você digite sua senha.

Se depois de executar o comando keytool ou jarsigner, o programa pausar e não solicitar uma senha, desconecte o dispositivo (token) e conecte-o novamente. Execute o comando novamente. Desta vez deve funcionar. 


"erro do jarsigner: java.lang.ClassNotFoundException: sun.security.pkcs11.SunPKCS11

Este erro ocorre ao usar uma versão de 64 bits do JDK. Para eliminar esse erro, baixe e use uma versão de 32 bits do JDK. 


"erro do jarsigner: java.lang.RuntimeException: carregamento do keystore: falha no carregamento

Este erro pode ocorrer, se você digitou a senha errada. 


 "erro de keytool: java.security.KeyStoreException: PKCS11 não encontrado

 Este erro ocorre se o arquivo de configuração não for carregado corretamente ou se o arquivo de configuração apontar para um arquivo que não existe (por exemplo, library=c:\WINDOWS\system32\eTPKCS11.dll). Às vezes, esse erro indica que os drivers de dispositivo do token não estão instalados em seu computador.


Atualizado em: 02/07/2025

Este artigo foi útil?

Compartilhe seu feedback

Cancelar

Obrigado!