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
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.
- Primeiro, use o
keytool
comando para obter oalias
valor a ser usado ao assinar:keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
- Verifique o resultado do seu
keytool
comando para uma linha que começa comAlias 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
is1
. - 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
- Se o seu comando for bem-sucedido, você verá uma saída como esta:
Adicionando assinatura Authenticode a example.exe
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.
- 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
- 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 paraopensc-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
- Use o
keytool
comando para obter oalias
valor a ser usado ao assinar:keytool -list -v -keystore NONE -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Verifique o resultado do seu
keytool
comando para uma linha que começa comAlias 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 deCertificate 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
- 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
- Se o seu comando for bem-sucedido, você verá uma saída como esta:
Adicionando assinatura Authenticode a example.exe
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
- Você pode verificar se sua assinatura digital é válida visualizando os detalhes da assinatura no Windows.
- 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