La firma de código es un proceso fundamental en el desarrollo de software que garantiza la autenticidad e integridad de las aplicaciones, protegiéndolas de manipulaciones y modificaciones no autorizadas. Para optimizar este proceso, la biblioteca PKCS#11 de Encryption Consulting ofrece una potente solución para firmar código con Jarsigner en diversos sistemas operativos, como Windows, Linux (Ubuntu) y macOS.
Jarsigner
La herramienta Jarsigner, incluida en el Java Development Kit (JDK), proporciona un mecanismo sólido para firmar digitalmente archivos, lo que la convierte en una herramienta esencial para los desarrolladores de Java que distribuyen aplicaciones en varias plataformas.
Es útil firmar los siguientes tipos de archivos:
- .frasco: Archivos de almacenamiento Java, que son archivos de propósito general para clases y recursos Java.
- .oreja: Archivos de archivo empresarial, utilizados para empaquetar aplicaciones empresariales Java EE.
- .guerra: Archivos de archivo de aplicaciones web, utilizados para empaquetar aplicaciones web Java.
- .sar: Archivos de archivo de servicio, utilizados para empaquetar servicios en algunos entornos Java EE.
Configuración del contenedor PKCS#11 en Ubuntu
Requisitos previos
Antes de analizar el proceso de firma mediante la herramienta Jarsigner y nuestro contenedor PKCS11 en una máquina Linux (Ubuntu), asegúrese de que lo siguiente esté listo:
- Versión de Ubuntu: Versión de Ubuntu 22.04 o posterior (el entorno probado es Ubuntu 24.02)
- Dependencias: Instalar liblog4cxx12 y curl.
Para instalar las dependencias, ejecute los siguientes comandos
- sudo apt-get install curl
- sudo apt-get install liblog4cxx12
Instalación del contenedor PKCS#11 de EC
Paso 1: Vaya a la sección Herramientas de firma de EC CodeSign Secure v3.02 y descargue el paquete PKCS#11 Wrapper para Ubuntu.

Paso 2: A continuación, genere un certificado de autenticación P12 desde el menú desplegable Configuración del sistema > Usuario > Generar certificado de autenticación.

Paso 3: Vaya a su sistema cliente Ubuntu y edite los archivos de configuración ( ec_PKCS#11client.ini y PKCS#11properties.cfg ) descargados en el PKCS#11 Wrapper.

Instale Java en su máquina Ubuntu.
También necesitará instalar Java (Java 8-17) en su máquina Ubuntu para que Jarsigner funcione con nuestro Wrapper PKCS11.
Paso 1: Instala Java 17 en tu máquina Ubuntu.
sudo apt instalar openjdk-17-jdk

Paso 2: Establezca Java 17 como la versión activa.
sudo update-alternativas –config java

Paso 3: Compruebe si Java se ha instalado correctamente o no.
java -version

Paso 4: Establezca Java 17 como la versión activa.
Ejecutar: nano ~/.bashrc
Después de ejecutar el comando anterior, agregue estas líneas al final del archivo:
exportar JAVA_HOME=
export PATH = $ JAVA_HOME / bin: $ PATH

Presione Ctrl + X, luego Y para confirmar y luego Enter para guardar.
Paso 5: Recargar el archivo bashrc
Ejecutar: source ~/.bashrc
Paso 6: Compruebe si la variable se ha configurado.
echo $ JAVA_HOME
Si no es así, abra una nueva terminal e inténtelo nuevamente.
Firma
Paso 1: Cambie el directorio de trabajo de la terminal a la carpeta que contiene los archivos “ec_pkcs11client.ini” y “pkcs11properties.cfg”.

Paso 2: Ejecute el comando de firma desde este directorio.
-keystore NINGUNO -storepass NINGUNO -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg -jar firmado -tsa http://marca de tiempo.digicert.com
A continuación se proporciona un comando de muestra:
jarsigner -keystore NINGUNO -storepass NINGUNO -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11properties.cfg -signedjar helloworld_signed.jar helloworld.jar gpg2 -tsa http://timestamp.digicert.com
Verificación
Paso 1: Para verificar, ejecute el siguiente comando:
-verificar -certs -verbose
Paso 2: A continuación se proporciona un comando de ejemplo:
jarsigner -verify helloworld_signed.jar -certs -verbose
Configuración del contenedor PKCS#11 en Windows
Requisitos previos
Antes de analizar el proceso de uso de la herramienta Jarsigner y nuestro contenedor PKCS11 en una máquina Windows, asegúrese de tener listo lo siguiente:
- Versión de Windows: Windows 11 (el entorno probado es Windows 11 23H2)
Instalación del contenedor PKCS#11 de EC
Paso 1: Vaya a la sección Herramientas de firma de EC CodeSign Secure v3.02 y descargue el paquete PKCS#11 para Windows.

Paso 2: A continuación, genere un certificado de autenticación P12 desde el menú desplegable Configuración del sistema > Usuario > Generar certificado de autenticación.

Paso 3: Vaya a su sistema cliente Windows y edite los archivos de configuración ( ec_PKCS#11client.ini y PKCS#11properties.cfg ) descargados en el PKCS#11 Wrapper.


Instalar Java en su máquina Windows
También necesitará instalar Java (Java 8-22) en su máquina Windows para que Jarsigner funcione con nuestro Wrapper PKCS11.
Paso 1: Instale Java 22 (instalador .exe) en su equipo Windows desde el sitio web oficial de Oracle.

Paso 2: Siga las instrucciones para instalar Java 22 en su máquina.


Paso 3: Establezca Java 22 como la versión activa almacenando la ruta del binario en la variable PATH.

Firma
Paso 1: Cambie el directorio de trabajo de la terminal a la carpeta que contiene los archivos “ec_pkcs11client.ini” y “pkcs11properties.cfg”.

Paso 2: Ejecute el comando de firma desde este directorio.
-keystore NINGUNO -storepass NINGUNO -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg -jar firmado -tsa http://marca de tiempo.digicert.com
A continuación se proporciona un comando de muestra:
jarsigner -keystore NINGUNO -storepass NINGUNO -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11properties.cfg -signedjar helloworld_signed.jar helloworld.jar gpg2 -tsa http://timestamp.digicert.com
Verificación
Paso 1: Para verificar, ejecute el siguiente comando:
-verificar -certs -verbose
Paso 2: A continuación se proporciona un comando de ejemplo:
jarsigner -verify helloworld_signed.jar -certs -verbose
Configuración del contenedor PKCS#11 en MacOS
Requisitos previos
Antes de analizar el proceso de uso de la herramienta Jarsigner y nuestro contenedor PKCS11 en una máquina MacOS, asegúrese de tener listo lo siguiente:
- Versión de macOS: Sequoia 15.2 (entorno de prueba Sequoia 15.2)
- Dependencias: Instalar liblog4cxx y curl.
Para instalar las dependencias, ejecute los siguientes comandos
- brew install curl
- brew install log4cxx
Instalación del contenedor PKCS#11 de EC
Paso 1: Vaya a la sección Herramientas de firma de EC CodeSign Secure v3.02 y descargue el paquete PKCS#11 para MacOS.

Paso 2: A continuación, genere un certificado de autenticación P12 desde el menú desplegable Configuración del sistema > Usuario > Generar certificado de autenticación.

Paso 3: Vaya a su sistema cliente MacOS y edite los archivos de configuración ( ec_PKCS#11client.ini y PKCS#11properties.cfg ) descargados en el PKCS11 Wrapper.

Instale Java en su máquina MacOS.
También necesitará instalar Java (Java 8-17) en su máquina MacOS para que Jarsigner funcione con nuestro Wrapper PKCS11.
Paso 1: Instala Java 17 en tu ordenador MacOS.
brew install openjdk@17
Paso 2: Localiza la ubicación donde está instalado Java 17 en tu máquina.
Información de preparación para openjdk@17
Paso 3: Establezca Java 17 como la versión activa.
Para Zsh: nano ~/.zshrc
Para Bash: nano ~/.bash_profile
Después de ejecutar el comando anterior, agregue estas líneas:
exportar PATH= :$RUTA
exportar JAVA_HOME=

Paso 4: Recargar las variables de entorno
Para Zsh: source ~/.zshrc
Para Bash: source ~/.bash_profile
Firma
Paso 1: Cambie el directorio de trabajo de la terminal a la carpeta que contiene los archivos “ec_pkcs11client.ini” y “pkcs11properties.cfg”.
Paso 2: Ejecute el comando de firma desde este directorio.
-keystore NINGUNO -storepass NINGUNO -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg -jar firmado -tsa http://marca de tiempo.digicert.com
A continuación se proporciona un comando de muestra:
jarsigner -keystore NINGUNO -storepass NINGUNO -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11properties.cfg -signedjar helloworld_signed.jar helloworld.jar gpg2 -tsa http://timestamp.digicert.com
Verificación
Paso 1: Para verificar, ejecute el siguiente comando:
-verificar -certs -verbose
Paso 2: A continuación se proporciona un comando de ejemplo:
jarsigner -verify helloworld_signed.jar -certs -verbose
Conclusión
CodeSign Secure de Encryption Consulting lleva la firma de código a un nuevo nivel al ofrecer una plataforma integral que no solo optimiza el proceso de firma, sino que también refuerza significativamente la seguridad de la organización. Gracias a funciones avanzadas como la integración del Módulo de Seguridad de Hardware , el hash del lado del cliente y el análisis antivirus, CodeSign Secure garantiza que las claves de firma permanezcan protegidas y que las aplicaciones firmadas estén libres de malware.
CodeSign Secure se integra fácilmente en los flujos de trabajo de CI/CD, lo que lo convierte en la solución ideal para organizaciones que buscan automatizar y escalar sus flujos de trabajo de desarrollo, cumpliendo al mismo tiempo con estrictas políticas de seguridad. Gracias a sus registros de auditoría detallados y la aplicación rigurosa de las políticas, ofrece transparencia y responsabilidad, ayudando a las empresas a cumplir con los requisitos de cumplimiento normativo y a generar confianza con sus usuarios.
Al integrarse perfectamente con Jarsigner, la biblioteca PKCS#11 de Encryption Consulting simplifica la configuración y ejecución de las tareas de firma, ofreciendo una experiencia consistente y segura en cualquier plataforma. Ya sea que desarrolle en Windows, implemente en Ubuntu o realice pruebas en macOS, esta biblioteca permite a los desarrolladores mantener altos estándares de seguridad con una complejidad mínima.
