Assinatura de código em Java

Introdução:

Este artigo será o artigo padrão após a implementação dos novos Requisitos Mínimos para Assinatura de Código em 1º de fevereiro de 2017.

Pré-requisitos:

 Este guia pressupõe que você já:

  • Pegou e instalou seu certificado em seu token de segurança
  • Instalei o Java JDK.
  •  Os direitos administrativos podem ser necessários dependendo das permissões definidas para a pasta bin Java JDK.

Configuração de assinatura:

  1. Para permitir que o JDK acesse o token de segurança, primeiro você precisa criar um arquivo de configuração. Abra qualquer editor de texto simples e crie um arquivo denominado eToken.cfg. O arquivo deve conter 2, possivelmente 3, linhas:
    nome=eToken
    Biblioteca=c:\WINDOWS\system32\eTPKCS11.dll
    slot=3

    Nota: O número do slot padrão quando não especificado é 0. O SafeNet eToken 5100 será atribuído automaticamente ao slot 0, portanto, não haverá necessidade de linha de slot no arquivo .cfg. No entanto, isso pode precisar ser alterado dependendo do número de leitores eTokens / SmartCard instalados. O número do slot padrão para o SafeNet Ikey 4000 é o slot 3. A linha do slot será necessária ao usar um SafeNet iKey 4000.
  2. Salve este arquivo na pasta bin JDK, por padrão é:
    C:\Arquivos de programas (x86)\Java\jdk1.7.0_67\bin 

  3. 3- Abra o prompt de comando: Iniciar> Executar> cmd
     
  4. Navegue até a pasta Java JDK Bin:
    cd C:\Arquivos de programas (x86)\Java\jdk1.7.0_67\bin 
     
  5. Para usar o token para assinar, você precisará encontrar o alias de sua chave privada. Isso permitirá que você consulte o certificado adequado ao assinar. Execute o seguinte comando na pasta bin:
    keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg

    Digite a senha do keystore: “Sua senha para o token”

    Observação de erro: se você receber o seguinte erro: “java.security.KeyStoreException: PKCS11 não encontrado” neste momento. - --- - Existem 2 problemas potenciais com a configuração:
     
    • Defina o número do slot como zero em seu arquivo eToken.cfg (slot = 0). Tente executar o comando list novamente, incrementando o número do slot em 1 a cada iteração do erro. Eventualmente, você deverá receber o prompt Enter KeyStore Password que aceitará sua senha do SafeNet Token. * Consulte: Etapa 1 de configuração de assinatura.
    • Os drivers SafeNet não estão instalados corretamente. Certifique-se de que os drivers adequados estejam instalados.
  6. A saída é composta do alias da chave, do tipo de chave e da impressão digital do certificado. Precisaremos do alias do certificado de assinatura de código para realmente assinar o arquivo.
    le-d0e453de-66db-414a-8fa8-0a07cfad66b5, PrivateKeyEntry, Certificate fingerprint (SHA1): 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 
     
  7. Se houver mais de um certificado em seu token, pode ser necessário discernir qual certificado usaremos. Abra o cliente de autenticação Safenet, pressione o ícone de engrenagem na parte superior:

  8. Encontre seu Certificado de assinatura de código GlobalSign instalado e clique duas vezes nele. Isso exibirá os detalhes do certificado. Selecione a guia Detalhes, role até a parte inferior e a impressão digital estará lá:

  9. Combine a impressão digital do certificado com o alias adequado em sua saída. Nesse caso, será a primeira entrada:
    le-d0e453de-66db-414a-8fa8-0a07cfad66b5, PrivateKeyEntry, Certificate fingerprint (SHA1): 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 
  10. Copie o alias (por exemplo, le-d0e453de-66db-414a-8fa8-0a07cfad66b5) para usar em nosso próximo comando.

Assinando um arquivo .Jar

  1. Agora que acessamos com sucesso o token e recebemos nosso alias de certificados, podemos assinar o arquivo .jar. Você precisará colocar o arquivo .jar que está assinando no diretório bin.
  2. Na linha de comando, navegue até o diretório bin do Java SDK, (por exemplo, C: \ Arquivos de programas (x86) \ Java \ jdk1.7.0_67 \ bin)
    O comando usado para assinar é:
    jarsigner -keystore NONE -storetype PKCS11 -tsa http://timestamp.globalsign.com/tsa/r6advanced1 -providerClass sun.security.pkcs11.SunPKCS11-providerArg eToken.cfg test.jar "le-d0e453de-66db-414a-8fa8-0a07cfad66b5"

Observação: registrar a data e hora de seu código é extremamente importante e altamente recomendado para cada parte do código que você assinar. Este carimbo de data / hora permitirá que o arquivo que você assina permaneça válido por muito tempo após a expiração do próprio certificado.

Erros comuns

  1. Aviso: a cadeia de certificados do signatário não é validada.

Você precisará importar o certificado intermediário de assinatura de código padrão GlobalSign para o seu token para garantir as cadeias de assinatura corretamente. Nota: Você precisa importar o certificado intermediário correspondente de acordo com seu tipo de certificado.

GlobalSign Alertas de sistema

Ver alertas recentes do sistema

Ver Alertas

Ferramenta de Inventário de Certificados

Faça a varredura de seus terminais para localizar todos os seus certificados.

Entrar / Inscrever-se

Teste de configuração SSL

Verifique a instalação do seu certificado quanto a problemas e vulnerabilidades de SSL.