En este artículo explicaremos como firmar un applet con un certificado propio o uno CA. Para el desarrollo se emplea las herramientas disponibles en el Kit de Desarrollo jdk1.6.0_04. Llamaremos %JPATH% al directorio donde se encuentran los ejecutables del JDK, por ejemplo "C:\Archivos de programa\Java\jdk1.6.0_04\bin". En Netbeans he modificado una aplicación que usa librerías que implementan el protocolo IAX2 y el resultado final es un softphone desplegable en una simple página html. Agregar la ruta de los binarios de Java a la variable de entorno PATH Para poder trabajar con los ejecutables del JDK desde cualquier directorio agregaremos la ruta %JPATH% a la variable de entorno PATH. Seleccionamos Propiedades dentro del Menu contextual sobre Mi PC. Bajo la pestaña de Opciones avanzadas hacemos click sobre el botón Variables de entorno. Buscamos y hacemos click sobre Path entre las Variables de sistema, luego hacemos click sobre el botón Modificar y en el Valor de la variable agregamos al final un punto y coma (";") seguido de %JPATH%. Creación de la llave Usaremos el algoritmo RSA y el alias cg1key. C:\>keytool -genkey -keyalg rsa -alias cg1key Escriba la contraseña del almacén de claves: ******** ¿Cuál es son su nombre y su apellido? [Unknown]: Franco Cedillo ¿Cuál es el nombre de su unidad de organización? [Unknown]: IT ¿Cuál es el nombre de su organización? [Unknown]: CyberGod ¿Cuál es el nombre de su ciudad o localidad? [Unknown]: Lima ¿Cuál es el nombre de su estado o provincia? [Unknown]: Lima ¿Cuál es el código de país de dos letras de la unidad? [Unknown]: PE ¿Es correcto CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE? [no]: si Escriba la contraseña clave para (INTRO si es la misma contraseña que la del almacén de claves): ENTER Exportación de la llave C:\>keytool -export -alias cg1key -file cg1key.crt Escriba la contraseña del almacén de claves: Certificado almacenado en el archivo Compilación de Applet Basta con colocarse en el directorio build dentro de la ruta de nuestro projecto. Allí debemos ubicar las bibliotecas JAR empleadas y un archivo con el texto que requerimos en el manifiesto. El manifiesto es un archivo de texto que puede tener la siguiente estructura: Manifest-Version: 1.0 Ant-Version: Apache Ant 1.7.0 Created-By: 10.0-b19 (Sun Microsystems Inc.) X-COMMENT: Main-Class will be added automatically by build Class-Path: inifile.jar jiaxc_windows_x86.jar jiaxc_windows_x86_md5.jar jiaxclient.jar libjiaxc.jar swing-layout-1.0.jar Para este ejemplo he llamado mymanifest al archivo de texto que será agregado como manifiesto al archivo JAR que generaré. En la línea de comando ejecutamos: ...\build>jar cvfm jiaxTest.jar mymanifest -C classes . manifest agregado agregando: Click2Call.gif (entrada = 6574) (salida = 6537) (desinflado 0%) agregando: IaxTestApplet.class (entrada = 3062) (salida = 1507) (desinflado 50%) agregando: PhonePanel$1.class (entrada = 1193) (salida = 652) (desinflado 45%) agregando: PhonePanel$2.class (entrada = 766) (salida = 471) (desinflado 38%) agregando: PhonePanel$3.class (entrada = 698) (salida = 426) (desinflado 38%) agregando: PhonePanel$4.class (entrada = 698) (salida = 429) (desinflado 38%) agregando: PhonePanel$Listener.class (entrada = 4416) (salida = 1957) (desinflad o 55%) agregando: PhonePanel.class (entrada = 14948) (salida = 6090) (desinflado 59%) Firma de bibliotecas JARs necesarias ...\build>jarsigner inifile.jar cg1 key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. ...\build>jarsigner jiaxc_windows_x86.jar cg1key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. ...\build>jarsigner jiaxc_windows_x86_md5.jar cg1key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. ...\build>jarsigner jiaxclient.jar cg1key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. ...\build>jarsigner libjiaxc.jar cg1key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. ...\build>jarsigner swing-layout-1.0.jar cg1key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. ...\build>jarsigner jiaxTest.jar cg1key Enter Passphrase for keystore: ******* Warning: The signer certificate will expire within six months. Verificación de Firma o Signado Verificaremos uno de todos los JARs que hemos signado. ...\build>jarsigner -verify -verbose -certs jiaxTest.jar 857 Fri Mar 07 13:44:46 COT 2008 META-INF/MANIFEST.MF 762 Fri Mar 07 13:44:48 COT 2008 META-INF/CG1KEY.SF 913 Fri Mar 07 13:44:48 COT 2008 META-INF/CG1KEY.RSA 0 Fri Mar 07 13:39:52 COT 2008 META-INF/ smk 6574 Wed Mar 05 17:41:44 COT 2008 Click2Call.gif X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 3062 Wed Mar 05 17:41:44 COT 2008 IaxTestApplet.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 1193 Wed Mar 05 17:41:44 COT 2008 PhonePanel$1.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 766 Wed Mar 05 17:41:44 COT 2008 PhonePanel$2.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 698 Wed Mar 05 17:41:44 COT 2008 PhonePanel$3.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 698 Wed Mar 05 17:41:44 COT 2008 PhonePanel$4.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 4416 Wed Mar 05 17:41:44 COT 2008 PhonePanel$Listener.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] smk 14948 Wed Mar 05 17:41:44 COT 2008 PhonePanel.class X.509, CN=Franco Cedillo, OU=IT, O=CyberGod, L=Lima, ST=Lima, C=PE (cg1key) [certificate will expire on 5/06/08 12:54] 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 signer certificate will expire within six months. Desplegado de Applet Finalmente incluímos el código de llamada al Applet desde una sencilla páigna HTML. Fuente |
Monday, March 10, 2008
¿Cómo firmar un Java Applet?
Etiquetas:
certificados digitales,
firmar applet,
firmar jar,
signar applet,
signar jar
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment