Saltar al contenido

Firma de un archivo jar con certificado de confianza para la implementación de JWS

Solución:

[Update 2017] La firma de código de fuente abierta de Certum ahora usa una tarjeta flash criptográfica como clave privada y debe estar conectada para la activación e instalación del certificado, así como para la firma del código. La clave cuesta 125 $ (+ tarifa de envío) y el certificado de 1 año solo cuesta 40 $. Puedes solicitar un descuento.


Estos son los siguientes pasos para firmar su archivo jar desde cero.

Instrucciones

Las instrucciones en inglés son difíciles de encontrar y no están actualizadas. El siguiente procedimiento se basa en estos 2 documentos:

  • Instrucciones parciales para la instalación y activación (inglés): falta la parte sobre el archivo “bundle.pem”.
  • Instrucciones completas de instalación y activación (polaco)

Crea, activa e instala tu certificado:

  1. Vaya al sitio web “Certum Certification” en la sección “Firma de código de fuente abierta” y solicite su certificado.
  2. Una vez recibida la tarjeta flash criptográfica (me tomó 15 días), conéctela, instale el controlador y el proCertum CardManager software de la tarjeta.
  3. Vaya a su cuenta de Certum y siga el proceso de activación de su certificado recién solicitado.

Propina: La aplicación CryptoAgent Java Web Start se ejecuta solo con un JDK (no JRE) <9 (es decir, JDK 7 u 8).

  1. Recibirás un correo solicitando algunos documentos oficiales (cédula de identidad, factura de alquiler, etc.) y un procedimiento de verificación por correo electrónico.
  2. Envíe la información y los documentos requeridos para la activación. Recibirá otro correo solicitando la instalación del certificado (la verificación se realizó en 1 hora).
  3. Instale el certificado en la tarjeta criptográfica siguiendo el procedimiento Almacenamiento del certificado en la tarjeta (vea las instrucciones en inglés, parte 4)

Obtenga el archivo “bundle.pem”

Este archivo es obligatorio para obtener una cadena de certificados válida al firmar su solicitud (consulte la parte 7.1.2 en las instrucciones en polaco).

Básicamente, consiste en concatenar en un archivo de formato de texto plano 1) su certificado y 2) el Certum Code Signing CA SHA2 Llave pública.

  1. Abierto proCertum CardManager >> Leer tarjeta >> pestaña Común >> Seleccione su certificado y haga clic en “Mostrar detalles”
  2. Exporta tu certificado: x509 – base-64
  3. Descargue Certum Code Signing CA SHA2 en formato PEM (de la lista de certificados raíz de Certum).
  4. Cree el archivo de texto “bundle.pem” concatenando estos 2 certificados (primero su certificado y luego el certificado Certum).

Firme su archivo jar con Jarsigner

  1. Cree el archivo “provider.cfg” como se explica en el punto 7.2 de las instrucciones en inglés.
  2. Necesitas el alias de su certificado (y no el nombre del dueño) para firmar su tarro. Para obtenerlo ejecuta el siguiente comando:
keytool -list -v -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" -storepass "[your_pin]"
  1. Una vez que tienes el alias, los provider.cfg y bundle.pem archivos listos, simplemente firme su jar con el siguiente comando:
jarsigner -keystore NONE -certchain "bundle.pem" -tsa "http://time.certum.pl" -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" -storepass "[your_pin]" "[your_code].jar" "[your_alias]"

Personalmente, uso un script Ant para firmar los archivos jar de mi aplicación. Consulte la tarea signjar del proyecto ANT.

Creo que finalmente logré hacerlo siguiendo este procedimiento:

  • Instaló el certificado proporcionado por Certum en Chrome a través de la interfaz de su sitio web
  • Exportó la clave privada como .pfx desde Chrome (Configuración, Administrar certificados, Exportar, Exportar la clave privada, PKCS # 12, …)
  • Utilicé la GUI de KeyTool (GUI de Java para keytools) para crear un p12 completo: certificado raíz de Certum importado como certificado de confianza, certificados intermedios importados como certificados de confianza, importado mi .pfx como un par de claves
  • Firmado el frasco con esta p12

Parece que funciona para mí, estoy esperando los comentarios de otros usuarios para asegurarme de que también funciona para ellos.

Editar: Intenté nuevamente exportar el certificado desde Chrome y vi que hay una opción para incluir la cadena de certificados en la exportación. Al hacer esto, ni siquiera necesito usar la GUI de KeyTool después. He vuelto a implementar la versión de prueba firmada con este nuevo p12:

  • Instaló el certificado proporcionado por Certum en Chrome a través de la interfaz de su sitio web
  • Exportó la clave privada como .pfx desde Chrome (Configuración, Administrar certificados, Exportar, Exportar la clave privada, PKCS # 12 + incluye cadena de certificados, …)
  • Firmado el frasco con esta p12

Estoy esperando los comentarios de otros usuarios para asegurarme de que también les funciona a ellos.

Basado en JaNeLA para el archivo – JNLP válido. Más importante editor conocido para WikiCleanerTest ..

ingrese la descripción de la imagen aquí

Así que hay un resultado de “parece funcionar aquí para identificar al editor”. Buen trabajo y gracias por la descripción del proceso.

Funciona mucho mejor que el que miré antes. :PAG


Jarsigner -verify

s     292828 Sun Oct 20 17:57:58 EST 2013 META-INF/MANIFEST.MF
      292645 Sun Oct 20 17:57:58 EST 2013 META-INF/WPCLEANE.SF
        2017 Sun Oct 20 17:57:58 EST 2013 META-INF/WPCLEANE.RSA
           0 Sun Oct 20 17:57:52 EST 2013 META-INF/
           0 Wed Feb 11 15:04:50 EST 2009 META-INF/maven/
           ..
           0 Sun Oct 20 17:57:32 EST 2013 org/xnap/commons/i18n/
sm      2837 Thu Sep 09 16:00:54 EST 2004 META-INF/info.xml
..
sm       214 Wed Feb 11 00:57:02 EST 2009 org/xnap/commons/i18n/LocaleChangeListener.class

  s = signature was verified 
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

Warning: 
This jar contains entries whose certificate chain is not validated.

Re-run with the -verbose and -certs options for more details.

Entiendo la advertencia:

Este jar contiene entradas cuya cadena de certificados no está validada.

..puede ignorarse.

Informe JaNeLA

JaNeLA muestra un error.

JaNeLA Report - version 11.05.17

Report for http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlp

cvc-complex-type.2.4.a: Invalid content was found starting with element 'homepage'. One of '{description, icon, offline-allowed, shortcut, association, related-content}' is expected.
cvc-complex-type.2.4.a: Invalid content was found starting with element 'homepage'. One of '{description, icon, offline-allowed, shortcut, association, related-content}' is expected.

XML encoding not known, but declared as utf-8
Codebase + href 'http://site4145.mutu.sivit.org/WikiCleaner.jnlp' is not equal to actual location of 'http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlp'.
Desktop icons were subject to bug nnnn in earlier J2SE versions
Optimize this application for off-line use by adding the <offline-allowed /> flag.
'short' description is longer than 'default' description.
Downloads can be optimized by specifying a resource size for 'WikipediaCleaner.jar'.
The resource download at WikipediaCleaner.jar can be optimized by removing the (default) value of download='eager'.
Lazy downloads might not work as expected for WikipediaCleaner.jar unless the download 'part' is specified. 
Resource type png of resource commons-nuvola-web-broom.png is not one of the allowable types of gif, jpg, jpeg.
Downloads can be optimized by specifying a resource size for 'commons-nuvola-web-broom.png'.
Icon loading & use can be optimized by specifying the width and height for commons-nuvola-web-broom.png

Vea el JNLP validado y una versión corregida con ajuste, a continuación.

Lanzamiento

Pero aquí están las verdaderas malas noticias:

Editor DESCONOCIDO
Editor DESCONOCIDO - Más información.

A continuación, se muestran algunos detalles del certificado:

  • Nicolas Vervelle (Nicolas Vervelle)

    • Tema: CN = Nicolas Vervelle, OU = WikipediaCleaner, O = WikipediaCleaner, L = París, ST = Francia, C = FR

Java obsoleto

Aquí hay una extraña advertencia que no entiendo.

Java obsoleto

La aplicación. está solicitando 1.5.0+, por lo que cualquier versión 1.7+ debe aceptarse sin dudarlo.
Afirma estar solicitando 1.6 (probablemente porque no tengo un tiempo de ejecución 1.5 instalado). Lo único que puedo pensar en activar la advertencia es la inclusión de una microversión, que es innecesaria.

JNLP

Aquí está el JNLP validado arriba:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+" codebase="http://site4145.mutu.sivit.org/WikiCleaner" href="https://foroayuda.es/WikiCleaner.jnlp">
  <information>
    <title>WPCleaner</title>
    <vendor>User:NicoV</vendor>
    <description>WPCleaner</description>
    <description kind="short">A tool for Wikipedia maintenance</description>
    <homepage href="http://en.wikipedia.org/wiki/WP:WPCleaner"/>
    <icon href="commons-nuvola-web-broom.png"/>
    <shortcut>
      <desktop/>
    </shortcut>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <j2se version="1.5.0+" java-vm-args="-Xmx512M"/>
    <jar href="WikipediaCleaner.jar" download="eager" main="true"/>
  </resources>
  <application-desc main-class="org.wikipediacleaner.WikipediaCleaner"/>
</jnlp>

Aquí hay un reemplazo sugerido. Es válido según JaNeLA (advertencias de barra que podemos ignorar). También incluye otro ajuste al atributo de versión mínima.

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+" codebase="http://site4145.mutu.sivit.org/WikiCleaner" href="https://foroayuda.es/WikiCleaner.jnlp">
  <information>
    <title>WPCleaner</title>
    <vendor>User:NicoV</vendor>
    <!-- Should be here.. -->
    <homepage href="http://en.wikipedia.org/wiki/WP:WPCleaner"/>
    <description>WPCleaner</description>
    <description kind="short">A tool for Wikipedia maintenance</description>
    <icon href="commons-nuvola-web-broom.png"/>
    <shortcut>
      <desktop/>
    </shortcut>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <!-- the micro-version request might be triggering the 
    Out-Of-Date Java version warning -->
    <j2se version="1.5+" java-vm-args="-Xmx512M"/>
    <jar href="WikipediaCleaner.jar" download="eager" main="true"/>
  </resources>
  <application-desc main-class="org.wikipediacleaner.WikipediaCleaner"/>
</jnlp>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *