> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://ajuda.activeweb.com.br/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# 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](https://knowledge.digicert.com/general-information/how-to-download-safenet-authentication-client)

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**.

![](https://storage.crisp.chat/users/helpdesk/website/-/e/0/2/c/e02c2bbec74c5000/1_17oxy30.png)

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.
