Firma de código Microsoft Authenticode en Linux con Jsign

jsign es una herramienta Java de código abierto e independiente de la plataforma para la firma de código Microsoft Authenticode. Jsign es fácil de integrar con sistemas de compilación como Maven, Gradle y Ant, o puede usarse directamente desde la línea de comandos.

En este tutorial cubriremos el uso de jsign desde la línea de comandos de Linux para Firma de código OV / IV y Firma de código EV. Debido a que Jsign está basado en Java, también puede usarlo en sistemas Windows y MacOS.

Instalar Jsign

Primero, tendrá que descargar e instalar Jsign. los Sitio web de Jsign incluye enlaces a paquetes Debian y RPM para una fácil instalación en los sistemas Linux más populares, así como un .jar archivo.

Firma de código OV / IV

Esta sección se aplica solo a los certificados de firma de código de Validación individual (IV) y Validación de organización (OV) que se solicitaron antes del 1 de junio de 2023. A partir del 1 de junio de 2023, los certificados de firma de código IV y OV de SSL.com comenzaron a emitirse en tokens USB del estándar federal de procesamiento de información 140-2 (FIPS 140-2) o a través de nuestro servicio de firma de código en la nube eSigner. 

Para la firma de código OV/IV, puede utilizar un certificado almacenado en un almacén de claves Java o un archivo PKCS#12 (PFX). En todos los ejemplos de código siguientes, reemplace los valores que se muestran en MAYÚSCULAS con sus valores reales.

  1. Primero, use el keytool comando para obtener el alias valor a utilizar al firmar:
    keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
  2. Compruebe la salida de su keytool comando para una línea que comienza con Alias name:.
    Tipo de almacén de claves: PKCS12 Proveedor de almacén de claves: SUN Su almacén de claves contiene 1 entrada Nombre de alias: 1 Fecha de creación: 18 de enero de 2021 Tipo de entrada: PrivateKeyEntry Longitud de la cadena del certificado: 4 ...

    En el ejemplo anterior, Alias name is 1.

  3. Utilice un comando como el siguiente para firmar y marcar el tiempo en un archivo:
    • jsign comando instalado en todo el sistema:
      jsign --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 ARCHIVO PARA FIRMAR
    • Con Jsigner .jar archivo:
      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- FIRMAR
  4. Si su comando es exitoso, debería ver un resultado como el siguiente:
    Agregar la firma Authenticode a example.exe
Nota: De forma predeterminada, SSL.com admite marcas de tiempo de claves ECDSA.

Si encuentra este error: The timestamp certificate does not meet a minimum public key length requirement, debe comunicarse con su proveedor de software para permitir las marcas de tiempo de las claves ECDSA.

Si no hay forma de que su proveedor de software permita el uso del punto final normal, puede usar este punto final heredado http://ts.ssl.com/legacy para obtener una marca de tiempo de una unidad de sellado de tiempo RSA.

Firma de código EV

También puede utilizar Jsign con un certificado de firma de código EV. El ejemplo aquí usa un SSL.com Certificado de firma de código EV instalado en un Token USB de clave de seguridad validada por FIPS 140-2.

  1. Primero, asegúrate de que OpenSC está instalado en su sistema para que pueda comunicarse con su token a través de la API PKCS # 11. En distribuciones basadas en Debian como Ubuntu, puede instalar OpenSC con apt:
    sudo apt instalar opensc
  2. A continuación, cree un archivo de configuración. El nombre del archivo es arbitrario, pero para los siguientes comandos de ejemplo usaremos eToken.cfg. Tenga en cuenta que el camino a opensc-pkcs11.so puede variar en su instalación de OpenSC, así que verifique antes de crear el archivo de configuración.
    nombre = OpenSC-PKCS11 descripción = SunPKCS11 a través de la biblioteca OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
  3. Ingrese al keytool comando para obtener el alias valor a utilizar al firmar:
    keytool -list -v -keystore NINGUNO -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Compruebe la salida de su keytool comando para una línea que comienza con Alias name:. Si su token contiene varios certificados, verifique las fechas de validez y el emisor en la salida con su certificado. Tenga en cuenta que los certificados de firma de código EV emitidos en YubiKey de SSL.com deben tener un alias de Certificate for PIV Authentication.
    Nombre de alias: Certificado para autenticación PIV Tipo de entrada: PrivateKeyEntry Longitud de la cadena del certificado: 1 Certificado [1]: Propietario: 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 = Organización privada, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = US Emisor: CN = SSL.com Intermedio de firma de código EV CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = EE. UU. Número de serie: 93f57a3bac6570c781580f63172e17 Válido desde: viernes 12 de abril 46:04:2020 EDT 17 hasta: sábado 12 de abril 46:04:2021 EDT XNUMX
  5. Utilice un comando como el siguiente para firmar y marcar el tiempo en un archivo:
    • jsign comando instalado en todo el sistema:
      jsign --keystore eToken.cfg --alias "Certificado para autenticación PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 ARCHIVO PARA FIRMAR
    • Con Jsigner .jar archivo:
      java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Certificado de autenticación PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 ARCHIVO -PARA FIRMAR
  6. Si su comando es exitoso, debería ver un resultado como el siguiente:
    Agregar la firma Authenticode a example.exe
Nota: De forma predeterminada, SSL.com admite marcas de tiempo de claves ECDSA.

Si encuentra este error: The timestamp certificate does not meet a minimum public key length requirement, debe comunicarse con su proveedor de software para permitir las marcas de tiempo de las claves ECDSA.

Si no hay forma de que su proveedor de software permita el uso del punto final normal, puede usar este punto final heredado http://ts.ssl.com/legacy para obtener una marca de tiempo de una unidad de sellado de tiempo RSA.

Verificar firma digital

  1. Puede verificar que su firma digital sea válida al ver los detalles de la firma en Windows.
    La firma digital está bien
  2. También puedes usar Herramienta de señalización en Windows para verificar la firma digital.
    signtool.exe verifique / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' Archivo: C: \ Users \ Aaron Russell \ Desktop \ example.exe Indice Algoritmo Marca de tiempo =========== ============================= 0 sha256 RFC3161 Verificado con éxito: C: \ Users \ Aaron Russell \ Desktop \ example.exe

Suscríbase al boletín de SSL.com

No te pierdas los nuevos artículos y actualizaciones de SSL.com

Manténgase informado y seguro

SSL.com es líder mundial en ciberseguridad, PKI y certificados digitales. Regístrese para recibir las últimas noticias, consejos y anuncios de productos de la industria de SSL.com.

Nos encantaría recibir tus comentarios

Responda nuestra encuesta y háganos saber lo que piensa sobre su compra reciente.