2009-09-05 11 views
12

Una pregunta simple con una respuesta bastante complicada:¿Cómo firmas un Java Midlet?

¿Cómo se firma un Java Midlet para que pueda cargarlo en un teléfono móvil con menos indicaciones de seguridad?

+0

+1: Yo estaba buscando algo como esto (+: N00b a J2ME – Everyone

Respuesta

25

Get necesidad de software

  1. Java SDK (JDK) de Sun (ya debe tener esto)
  2. Java Wireless Toolkit (WTK) también de Sun
  3. Opcionalmente conseguir e instalar Ant y Antenna que le permiten automatizar su construcción (recomiendo encarecidamente estos)

Importar un certificado existente (si lo tiene)

  1. Si usted ha comprado un certificado de Verisign (u otro proveedor) que necesita para importar el certificado en el almacén de claves de J2SE.
  2. Trate de usar el siguiente comando keytool -import -alias {myalias} -file {mycertificate} (no he podido probar esto, ya que no tengo un certificado adecuado)
  3. Run keytool -list para ver su nuevo certificado
  4. A continuación, debe exportar el certificado para que puede importar a su teléfono
  5. Run keytool -export -alias {myalias} -file mycertificate.crt
  6. importar el certificado en su teléfono (ver detalles más abajo)

Crear e importar un nuevo (prueba) Certificado

  1. Es necesario utilizar keytool (desde el JDK)
  2. He utilizado el siguiente comando keytool -genkey -alias {myalias} -keyalg RSA -validity 365
  3. Esto le pedirá una contraseña de almacén de claves, introduzca su contraseña del almacén de claves (si tiene un almacén de claves existente) o la que desea utilizar si todavía no tiene una
  4. Rellene todas las instrucciones sobre la ubicación/nombre de la compañía, etc.
  5. Run keytool -list para ver su nuevo certificado
  6. A continuación, debe exportar el certificado para que pueda importar a su teléfono
  7. Run keytool -export -alias {myalias} -file mycertificate.crt
  8. importar el certificado en su teléfono (ver más abajo para más detalles)
C:\j2sdk1.4.2_08\bin>keytool -genkey -alias company -keyalg RSA -validity 365 
Enter keystore password: password 
What is your first and last name? [Unknown]: My Name 
What is the name of your organizational unit? [Unknown]: company 
What is the name of your organization? [Unknown]: company 
What is the name of your City or Locality? [Unknown]: location 
What is the name of your State or Province? [Unknown]: location2 
What is the two-letter country code for this unit? [Unknown]: GB 
Is CN=My Name, OU=company, O=company, L=location, ST=location2, C=GB correct? [no]: yes 
Enter key password for (RETURN if same as keystore password): 

Construir y empaquetar la aplicación

  1. Use javac para construir su MIDlet prestando especial atención a las opciones classpath y bootclasspath (de lo contrario, la verificación previa fallará). También configuré el objetivo en 1.1 y el origen en 1.3
  2. Genere su archivo JAD los atributos críticos en el JAD son MIDlet-Jar-URL, MIDlet-Jar-Size, MIDlet-Permissions también incluimos MIDlet-Icon, MicroEdition-Configuration , MicroEdition-Profile, MIDlet-Name, MIDlet-Push-1, MIDlet-Icon, MIDlet-Description y MIDlet-Version
  3. Genere el archivo MANIFEST.MF basado en su JAD, debe eliminar MIDlet-Jar-Size y MIDlet-Jar-URL
  4. Both these tasks can be completed using the wtkJad Antenna task
  5. Package and preverify the app using the wtkPackage Antenna Task you must set the classpath and bootclasspath properties correctly otherwise Preverification will fail

Sign the application

  1. Sign the Application using jarsigner
  2. Run jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}
  3. Ahora que han firmado un frasco que tenga que actualizar el MIDlet-Jar-Size en su JAD
  4. Ahora agregue el certificado a la JAD usando JadTool.jar del WTK
  5. Run java -jar JadTool.jar -addcert -alias {myalias} -storepass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
  6. Ahora agregar la firma a la JAD de nuevo utilizando JadTool.jar
  7. Run java -jar JadTool.jar -addjarsig -alias {myalias} -jarfile {myjar} -storepass {mypassword} -keypass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}

despliegue

  1. implementar esta a un servidor web con los tipos MIME establecidos correctamente y descárguelo a su teléfono y será una aplicación de terceros confiable
  2. También puede implementar aplicaciones en teléfonos enviando el JAR & JAD al teléfono a través de Bluetooth o infrarrojos o un cable según las funciones de su teléfono. En los teléfonos Nokia los archivos aparecen en la bandeja de entrada de SMS

Instalación del Certificado en el teléfono

  1. importar el certificado en su teléfono, en Windows XP SP2 que podía hacer esto haciendo clic derecho el archivo y seleccionando "Enviar a dispositivo Bluetooth", , también debería poder enviar archivos por cable o por infrarrojos (IR). NB: Me no he encontrado modos de importar un certificado en un teléfono de la serie 40
  2. Una vez instalado el certificado tiene que ser autorizada por "Instalación de aplicaciones".En mi teléfono (Nokia 6680) esto está bajo Herramientas- Configuración Trust > > Settings- > Certificado Management-, encendí todo, pero creo que "Instalación de aplicaciones" es todo lo que necesita Problemas

Común

  1. Aplicación no instalada con el JAD: la aplicación solo es confiable si se instala con el JAD, la aplicación se instalará desde el contenedor pero no será de confianza.
  2. Configuración de confianza de la aplicación no establecida: una vez que se instala la aplicación, debe especificar cuánta confianza se le debe otorgar (no obtiene todos los permisos de manera predeterminada). En un teléfono Nokia Series 60 estos se encuentran en la aplicación. Gerente.
  3. Certificado raíz desaparecidos desde el teléfono: El certificado verificado Java y/o certificados de Verisign faltan en algunos teléfonos check menos Herramientas- > Settings- > gestión de certificados para el certificado correspondiente
  4. Error de autorización: - Hay toda una serie de posibles razones detrás de esto aquí son los que me he encontrado
    1. certificado de falta desde el teléfono, vuelva a comprobar su certificado está instalado y se ha marcado como de confianza para la aplicación se instala en la administración de certificados
    2. reinicio: desinstalar la aplicación completamente a continuación, reinicie su teléfono intente tomar la batería y SIM también, a menudo las cosas se complican, especialmente si ha estado reinstalando mucho sin desinstalar primero
    3. No coinciden JAD/JAR: Compruebe el tamaño de la aplicación en el JAD, recuerde que es el número de bytes que es importante no es el tamaño en disco
    4. caché
    5. navegador: Si va a instalar de forma inalámbrica asegurarse de que se borre la caché del navegador antes de instalar
    6. he oído, pero no verificado que los saltos de línea en el MIDlet-Permissions pueden causar problemas pero me parece bien en Nokia 6680/6630/6230i (¿podría depender del firmware?)
    7. El atributo MIDlet-Permissions es la causa de muchos problemas (especialmente desde la documenta a menudo falta/falta o es diferente dependiendo del teléfono), intente omitirlo primero y agregue permisos uno a la vez. Algunos teléfonos se quejan acerca de los permisos que no apoyan, algunos lo ignorará
  5. Hay un error en algunos de los primeros Nokia 6600 firmwares que detener la instalación de MIDlets de confianza
  6. Certificado no válido aún: si generado el certificado usted mismo puede tener una fecha de inicio de validez de mañana, también si las fechas de su PC y teléfono son diferentes puede estar fuera del período de validez del certificado
  7. Sin administración de certificados en teléfonos de la Serie 40, puede instalar un aplicación pero el comportamiento es extraño con certificados autofirmados
  8. JadTo Ol problemas: no he experimentado ninguno de estos problemas, pero muchas otras personas tienen
    1. "Tengo problemas si trato de usar el jadtool manualmente. Tengo una cadena de certificados y parece que no puedo obtener el segundo certificado agregado al archivo JAD usando cualquier jadtool WTK. Sin embargo, la parte más interesante es que puedo firmar con éxito el midlet usando cualquiera de las mismas interfaces GUI de WTK, agregan el segundo certificado correctamente.Mis pasos:
      1. Uso 1.4.2_06 jarsigner.exe para firmar frasco
      2. Uso WTK (2.2 o 2.3 beta) jadtool a addcert con certnum 1
      3. Si llamo a jadtool addcert con certnum 2 es el mismo certificado insertado como CERT 1-2 Asumo que estoy haciendo algo de manera incorrecta ya que la interfaz gráfica de usuario WTK parece estar funcionando muy bien "
    2. " he recibido un mensaje en el grupo de noticias KVM sobre el tema que indica que hay un error en la jadtool y el autor afirma haber presentado un informe de error y publicado un parche: http://archives.java.sun.com/cgi-bin/wa?A2=ind0508&L=kvm-interest&F=&S=&P=9858 Una nota interesante th También se publicó que los parámetros de cert JAD son estáticos, por lo que una vez que los obtiene correctamente del WTK, puede colocarlos estáticamente en el script ant. "
    3. " Estoy intentando firmar un MIdlet para el dispositivo Nokia 6620. Estoy usando un certificado de firma de código de Verisign que en realidad contiene dos certificados (usuario y CA intermedia). Estoy usando la herramienta de firma WTK 2.2. ¿Sabes si esta herramienta admite dos certificados al firmar? La firma se agrega al archivo JAD con dos certificados, pero he estado recibiendo un error de seguridad durante la instalación. He comprobado en el dispositivo y hay diferentes certificados raíz instalados para Verisign pero aún falla.
    4. "Si lo desea, puede descargar el kit de desarrollo sprintpcs ya que es compatible con certificados dobles (http://developer.sprintpcs.com). Sin embargo, nunca obtuve ese certificado para trabajar en el teléfono Nokia (6620/cingular), aunque sí funciona en teléfonos Sprint. (con la raíz del desarrollador activada). Al final, solo conseguí que las cosas funcionen creando el certificado tal como se describe en este blog e instalándolo en el teléfono. Curiosamente, aunque el certificado raíz de mi certificado firmado por Versign * estaba * en el 6620 teléfono, aún así nunca instalaría mi MIDlet como lo pensaría que debería ".
  9. celulares viejos (6230/I, 6682) no admiten certificados x509, WPKI se ha sugerido como una posible solución, pero que no han investigado este
  10. Las conexiones de socket puede ser problemático (http://discussion.forum.nokia.com/forum/showthread.php?t=68306) posiblemente debido a la infraestructura WAP y los servicios prestados por un operador. HTTP es un protocolo mucho más seguro para usar
  11. "Vaya en línea y verifique la validez de la aplicación": Sí/No. Si hago clic en el botón "sí" del teléfono, aparece el siguiente error: "Certificado revocado para esta aplicación" y la instalación falla. Para rectificar esto, vaya a Herramientas - > Administrador - > Menú - > Configuración - > Comprobación de Certif en línea [Encendido/Apagado/Obligatorio] También hay una configuración de dirección predeterminada. Si se requiere la configuración de control en línea, la verificación fallará, si no hay una dirección predeterminada. ver http://discussion.forum.nokia.com/forum/showthread.php?t=71071

dominios de confianza

  1. Hay 4 diferentes dominios de confianza en MIDP2 (fabricante, operador, tercero de confianza, y sin confianza). Trusted Third Party es el único que realmente nos sirve.Ofrece las siguientes opciones en mi Nokia 6680 (Vodafone UK):
  2. Acceso a la red: No permitido, Preguntar todo el tiempo, Preguntar por primera vez Mensajería: No permitido, Preguntar siempre Aplicación Arranque automático: No permitido, Preguntar cada tiempo, pida primera vez Conectividad: No se permite, para hacer cada vez, Pregunta primera vez, siempre permitido Multimedia: No se permite, para hacer cada vez, para hacer primera vez Leer datos del usuario: No se permite, para hacer cada vez, para hacer primera vez, siempre permitido Editar datos del usuario: No se permite, para hacer cada vez, para hacer primera vez, siempre permitió
  3. Estos parámetros están definidos por el operador y el fabricante del teléfono y por lo tanto variar entre el teléfono, el fabricante y operador.

sin resolver problemas

  1. que logró firmar la JAD con este formato mediante utilidades J2ME WTK, pero al intentar instalarlo en el dispositivo me sale un mensaje de "autenticación de aplicaciones no 909".

JAD Muestra

MIDlet-Jar-URL: MyApp.jar 
MIDlet-Jar-Size: 201365 
MIDlet-Name: MyApp 
MIDlet-Vendor: EC1M 
MicroEdition-Profile: MIDP-2.0 
MicroEdition-Configuration: CLDC-1.1 
MIDlet-Icon: logo.png 
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,* 
MIDlet-Description: MyApp MIDlet 
MIDlet-Permissions: javax.microedition.io.PushRegistry,javax.microedition.io.Connector.sms... 
MIDlet-Version: 1.0.67 MIDlet-1: MyApp, logo.png,net.ec1m.MyApp.midp.MyAppMIDlet 
MIDlet-Certificate-1-1: MIICODCCAaECBEKqpfswDQYJKoZIhvcNAQEEBQAwYz...= 
MIDlet-Jar-RSA-SHA1: EUsAch/.../hEZOsJsiCjBOhNs/3FSw4= 

Muestra Manifiesto

Manifest-Version: 1.0 
MIDlet-Name: MyApp 
Created-By: 1.4.2_05-b04 (Sun Microsystems Inc.) 
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,* 
MIDlet-1: MyApp, logo.png, net.ec1m.MyApp.midp.MyAppMIDlet 
MicroEdition-Configuration: CLDC-1.1 
Ant-Version: Apache Ant 1.6.2 
MIDlet-Icon: logo.png 
MIDlet-Vendor: EC1M 
MIDlet-Permissions: javax.microedition... 
MIDlet-Version: 1.0.67 
MicroEdition-Profile: MIDP-2.0 
MIDlet-Description: MyApp MIDlet 

Muestra hormiga construye una lista de he puesto nuestra EC1Mant build file en nuestra página web para (esperemos) hacer todo esto un poco más fácil para ti. Otros recursos Este FAQ on the Nokia Forum es digno de una lectura.

+0

he instalado su certificado de certificado raíz .. usar este symcaimport.redelijkheid.com/ ahora Configuración> Seguridad > certificados> goDaddy> seleccione el uso> hay tres opciones servidor de autenticación. cado cruz. aplicación de firma entre los cuales signo aplicación está desactivada .. y cuando instalo la aplicación y haga clic en ella se muestra la aplicación no válido "Eliminar?" certificado podredumbre he instalado es de https://certs.godaddy.com/anonymous/repository.seam Go Daddy Certificación raíz de la autoridad de certificación Clase 2 (Formato DER) pero muestra "Certificado no encontrado en el teléfono o SIM" –

+1

nice answer. ¡wikifícalo! – kokbira

+0

Instalé el certificado en mi teléfono móvil ('Nokia Asha 302') pero cuando voy a' Certificate Management' la opción 'Applications Signing' aparece atenuada, así que aparece el error' Certificate not on device or SIM' cuando intento Para abrirlo. ¿Cómo puedo habilitarlo? ¡Estoy desesperado! ¡Estoy intentando firmar una aplicación hecha por mí mismo por 2 días y no puedo hacerlo funcionar! :( –

2

Paso 1: Crear solicitud RSE que puedan ser planteadas por

1) Creating keystore and using that generate CSR file. 
2) Perform steps given by certificate authority and download CSR and private key files. 

Paso 2: damos su información a la autoridad de certificación para su verificación.

Paso 3: se le proporcionará un certificado de firma de código.

Paso 4: necesita cargar abajo certificado intermedio junto con el certificado raíz.

Paso 5: Ahora va a tener your_domain_name.crt, IntCertCA.crt, TrustedRoot.crt

Now you need to create a chained certificate by combining all above certificates. 

1) Open a text editor (such as wordpad) and paste the entire body of each certificate into one text file in the following order: 

    The Primary Certificate - your_domain_name.crt 
    The Intermediate Certificate - IntCertCA.crt 
    The Root Certificate - TrustedRoot.crt 
    Make sure to include the beginning and end tags on each certificate. The result should look like this: 

    -----BEGIN CERTIFICATE----- 
    (Your Primary SSL certificate: your_domain_name.crt) 
    -----END CERTIFICATE----- 
    -----BEGIN CERTIFICATE----- 
    (Your Intermediate certificate: IntCertCA.crt) 
    -----END CERTIFICATE----- 
    -----BEGIN CERTIFICATE----- 
    (Your Root certificate: TrustedRoot.crt) 
    -----END CERTIFICATE----- 

    Save the combined file as your_domain_name.pem. The .pem file is now ready to use. 

Paso 6: clave privada importar en su your_domain_name.pem

openssl pkcs12 -export -in your_domain_name.pem -inkey your_private_key.key -out output_file_name.p12 -name your_alias 


    NOTE: PLEASE REMOVE \ FROM FOLLOWING COMMANDS AND EXECUTE (\ IS BASICALLY COMMAND CONTINUETY) 

Paso 7: Create keystore from output_file_name.p12

keytool -importkeystore \ 
    -deststorepass changeit -destkeypass changeit -destkeystore your_domain_keystore.ks \ 
    -srckeystore output_file_name.p12 -srcstoretype PKCS12 -srcstorepass your_store_password \ 
    -alias your_alias 

Paso 8: NOTA: POR FAVOR TOMAR seguridad de su archivo JAD antes de activar siguientes comandos.

Add your certificates to your your_midlet_name.jad file. 

    java -jar JadTool.jar -addcert -alias your_alias \ 
    -storepass your_store_password \ 
    -keystore your_domain_keystore.ks \ 
    -inputjad your_midlet_name.jad -outputjad your_midlet_name.jad  

Paso 9: NOTA: POR FAVOR TOMAR seguridad de su archivo JAD antes de activar siguientes comandos.

Sign your midlet, also use your_midlet_name.jad file generated from Step8. 

    java -jar JadTool.jar -addjarsig \ 
    -alias your_store_password \ 
    -storepass your_store_password \ 
    -keypass your_store_password \ 
    -keystore your_domain_keystore.ks \ 
    -inputjad your_midlet_name.jad -outputjad your_midlet_name.jad 
Cuestiones relacionadas