Assinatura de código Microsoft Authenticode no Linux com Jsign

Jsign é uma ferramenta Java de código aberto e independente de plataforma para assinatura de código Microsoft Authenticode. Jsign é fácil de integrar com sistemas de construção como Maven, Gradle e Ant, ou pode ser usado diretamente da linha de comando.

Neste tutorial, vamos cobrir o uso de Jsign da linha de comando do Linux para Assinatura de código OV / IV e Assinatura de código EV. Como o Jsign é baseado em Java, você também pode usá-lo em sistemas Windows e MacOS.

Instale o Jsign

Primeiro, você terá que baixar e instalar o Jsign. o Site Jsign inclui links para pacotes Debian e RPM para fácil instalação nos sistemas Linux mais populares, bem como um .jar arquivo.

Assinatura de código OV / IV

Esta seção se aplica apenas a certificados de assinatura de código de Validação Individual (IV) e Validação de Organização (OV) que foram solicitados antes de 1º de junho de 2023. A partir de 1º de junho de 2023, os certificados de assinatura de código IV e OV da SSL.com começaram a ser emitidos em tokens USB Federal Information Processing Standard 140-2 (FIPS 140-2) ou por meio de nosso serviço de assinatura de código em nuvem eSigner. 

Para assinatura de código OV/IV, você pode usar um certificado armazenado em um keystore Java ou em um arquivo PKCS#12 (PFX). Em todos os exemplos de código abaixo, substitua os valores mostrados em MAIÚSCULAS pelos seus valores reais.

  1. Primeiro, use o keytool comando para obter o alias valor a ser usado ao assinar:
    keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
  2. Verifique o resultado do seu keytool comando para uma linha que começa com Alias name:.
    Tipo de armazenamento de chave: PKCS12 Fornecedor de armazenamento de chave: SUN Seu armazenamento de chave contém 1 entrada Nome do alias: 1 Data de criação: 18 de janeiro de 2021 Tipo de entrada: PrivateKeyEntry Comprimento da cadeia de certificado: 4 ...

    No exemplo acima, Alias name is 1.

  3. Use um comando como o seguinte para assinar e registrar a data e hora de um arquivo:
    • jsign comando instalado em todo o sistema:
      jsign --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-SENHA --tsaurl http://ts.ssl.com --tsmode RFC3161 ARQUIVO PARA ASSINAR
    • Com Jsigner .jar arquivo:
      java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO- PLACA
  4. Se o seu comando for bem-sucedido, você verá uma saída como esta:
    Adicionando assinatura Authenticode a example.exe
Nota: Por padrão, SSL.com oferece suporte a registros de data e hora de chaves ECDSA.

Se você encontrar este erro: The timestamp certificate does not meet a minimum public key length requirement, você deve entrar em contato com o fornecedor do software para permitir registros de data e hora das chaves ECDSA.

Se não houver como seu fornecedor de software permitir o uso do endpoint normal, você poderá usar esse endpoint legado http://ts.ssl.com/legacy para obter um registro de data e hora de uma unidade de registro de data e hora RSA.

Assinatura do código EV

Você também pode usar Jsign com um certificado de assinatura de código EV. O exemplo aqui usa um SSL.com Certificado de assinatura de código EV instalado em um Token USB de chave de segurança validada FIPS 140-2.

  1. Primeiro, certifique-se de que OpenSC está instalado em seu sistema para que possa se comunicar com seu token por meio da API PKCS # 11. Em distros baseadas em Debian, como Ubuntu, você pode instalar OpenSC com apt:
    sudo apt instalar opensc
  2. Em seguida, crie um arquivo de configuração. O nome do arquivo é arbitrário, mas para os comandos de exemplo abaixo, usaremos eToken.cfg. Observe que o caminho para opensc-pkcs11.so pode variar em sua instalação do OpenSC, portanto, verifique antes de criar o arquivo de configuração.
    nome = OpenSC-PKCS11 descrição = SunPKCS11 via biblioteca OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
  3. Use o keytool comando para obter o alias valor a ser usado ao assinar:
    keytool -list -v -keystore NONE -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Verifique o resultado do seu keytool comando para uma linha que começa com Alias name:. Se o seu token contiver vários certificados, verifique as datas de validade e o emissor na saída em relação ao seu certificado. Observe que os certificados de assinatura de código EV emitidos em YubiKey de SSL.com devem ter um nome alternativo de Certificate for PIV Authentication.
    Nome alternativo: Certificado para autenticação PIV Tipo de entrada: PrivateKeyEntry Comprimento da cadeia de certificados: 1 Certificado [1]: Proprietário: OID.1.3.6.1.4.1.311.60.2.1.3 = US, OID.1.3.6.1.4.1.311.60.2.1.2 .2.5.4.15 = Nevada, OID.20081614243 = Organização privada, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = EUA Emissor: CN = SSL.com EV Code Signing Intermediate CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Número de série: 93f57a3bac6570c781580f63172e17 Válido de: Sex 12 de abril 46:04:2020 EDT 17 até: Sáb 12 de abril 46:04:2021 EDT XNUMX
  5. Use um comando como o seguinte para assinar e registrar a data e hora de um arquivo:
    • jsign comando instalado em todo o sistema:
      jsign --keystore eToken.cfg --alias "Certificado para autenticação PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Com Jsigner .jar arquivo:
      java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Certificado para autenticação PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 ARQUIVO -ASSINAR
  6. Se o seu comando for bem-sucedido, você verá uma saída como esta:
    Adicionando assinatura Authenticode a example.exe
Nota: Por padrão, SSL.com oferece suporte a registros de data e hora de chaves ECDSA.

Se você encontrar este erro: The timestamp certificate does not meet a minimum public key length requirement, você deve entrar em contato com o fornecedor do software para permitir registros de data e hora das chaves ECDSA.

Se não houver como seu fornecedor de software permitir o uso do endpoint normal, você poderá usar esse endpoint legado http://ts.ssl.com/legacy para obter um registro de data e hora de uma unidade de registro de data e hora RSA.

Verificar assinatura digital

  1. Você pode verificar se sua assinatura digital é válida visualizando os detalhes da assinatura no Windows.
    Assinatura digital está ok
  2. Você também pode usar Ferramenta de sinalização no Windows para verificar a assinatura digital.
    signtool.exe verify / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' Arquivo: C: \ Users \ Aaron Russell \ Desktop \ example.exe Algoritmo do índice Timestamp =========== ================================= 0 sha256 RFC3161 Verificado com sucesso: C: \ Users \ Aaron Russell \ Desktop \ example.exe

Inscreva-se no boletim informativo de SSL.com

Não perca novos artigos e atualizações de SSL.com

Mantenha-se informado e seguro

SSL.com é líder global em segurança cibernética, PKI e certificados digitais. Inscreva-se para receber as últimas notícias do setor, dicas e anúncios de produtos da SSL.com.

Adoraríamos receber seu feedback

Responda à nossa pesquisa e deixe-nos saber sua opinião sobre sua compra recente.