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 Shift, clique 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
Obrigado!