Cómo firmar aplicaciones y applets Java
17/4/2018 | Jindřich Zechmeister
Java je považována za málo důvěryhodnou platformu. Má stále problémy s velkým počtem zranitelností a podpis Java aplikace či appletu naprosto zásadní pro důvěru cílového uživatele. V tomto článku najdete postup, jak zažádat o certifikát pro podpis Java appletů a jak ho začít využívat.
¿Para qué sirven los certificados de firma de aplicaciones?
Al igual que otros certificados, los certificados de firma de código se utilizan para aumentar la seguridad; sin embargo, no se utilizan para la comunicación entre el navegador y el servidor, sino para la firma digital de aplicaciones. El uso del certificado es similar a la firma electrónica, tal como la conocemos de la comunicación por correo electrónico.
La principal importancia de la firma de código es la siguiente:
- Demostrar el origen de la aplicación y la identidad del editor
- Demostrar la integridad del código durante su transferencia al usuario
Al igual que con la firma electrónica, es necesario establecer la identidad del editor para estar seguros de que el software no proviene de una fuente no confiable. Igualmente importante es el control de la integridad de los datos, es decir, su completitud e invariabilidad. Gracias a la firma digital de la aplicación, podemos comprobar que nadie ha modificado la aplicación después de su emisión. Para los usuarios de su aplicación, la firma es una garantía de que el programa proviene de usted y que nadie lo ha modificado después de su emisión.
¿Cuál es la ventaja de un certificado de firma de código para Java?
Mencioné las características generales y ventajas del certificado de firma de código. Además de las ventajas mencionadas anteriormente, el certificado para firmar aplicaciones Java le permite:
- firmar archivos Jar para plataformas de escritorio.
- usar el algoritmo de hash Secure Hash Algorithm SHA-1 y opcionalmente el más avanzado SHA-2.
- compatibilidad con el Runtime Environment (JRE).
- demostrar al usuario el origen y la seguridad del código, ayudando a reducir el número de advertencias
Java se considera una plataforma poco confiable. Todavía tiene problemas con un gran número de vulnerabilidades (sobre las que regularmente le informan en el boletín semanal El Semana en Seguridad), por lo que la firma de una aplicación o applet de Java es absolutamente esencial para la confianza del usuario final.
¿Cómo solicitar el certificado para Java?
Además de solicitar el certificado de firma de código en SSLmarket, también debe resolver aspectos criptográficos como la solicitud CSR y la clave privada.
Después de firmar aplicaciones y applets de Java, necesitará JDK (Java Development Kit) distribuido por Oracle. Para trabajar con el certificado y firmar, necesitará los programas keytool, jar, y jarsigner de este paquete.
Creación del Keystore y la clave privada
Antes de generar la solicitud de certificado, que es una clave pública, necesita crear su clave privada. Hágalo con el comando
keytool -genkey -keyalg rsa -keystore
El Keystore le pedirá que lo nombre, que cree su alias y una contraseña para el keystore. También le preguntará por el nombre de su empresa.
El par de claves se almacena en el Keystore después de su creación y la clave privada no debe enviarse bajo ninguna circunstancia.
Ahora cree la solicitud CSR que se necesita para pedir el certificado. Se le pedirá que ingrese información adicional.
keytool -certreq -file certreq.csr -keystore
Ingrese la solicitud CSR creada en el pedido del certificado de firma de código en SSLmarket.
Cómo firmar con el certificado
Importación del certificado al Keystore
Después de verificar su empresa, la autoridad emitirá el certificado y lo recibirá por correo electrónico de SSLmarket. Antes de usarlo, debe importarlo a su keystore con el comando:
keytool -import -trustcacerts -keystore
Se advierte que el archivo P7B importado no es el certificado Intermedio que enviamos. Es necesario convertir el certificado SSL de SSLmarket del formato PEM (Base64) al formato PKCS#7, es decir, P7B, y luego importarlo junto con el intermedio. Para esto, puede usar el artículo Fundamentos del trabajo con OpenSSL - exportación, importación, conversiones de formatos.
Firma de aplicaciones y applets
Para firmar el archivo Jar, use la aplicación jarsigner.
jarsigner -keystore
Agregue la marca de tiempo (timestamp) con el comando:
jarsigner -tsa https://timestamp.geotrust.com/tsa -keystore
Durante la firma, se le pedirá que ingrese la contraseña del Keystore que creó al establecerlo.
Verificación de la firma
Seguramente querrá verificar su nueva firma. Puede hacerlo con el comando
jarsigner -verify -verbose -certs C:TestApplet.jar
Si todo está en orden, puede publicar la aplicación firmada en Internet y ponerla a disposición de los usuarios. Si descargan su programa o applet de Java, su Java Runtime Environment les mostrará su identificación digital de la firma.
Más información en la documentación
Este artículo es para orientación rápida sobre la firma de aplicaciones Java. Recomiendo estudiar la documentación completa de Oracle, que cubre todos los aspectos de la firma de aplicaciones y applets de Java. Se encuentra disponible en el sitio web The Java Tutorials.
Especialista en los certificados SSL de seguridad
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz