www.SonyEricsson.com ContactDeveloper World   ContactEnglish   ContactIndia
Contact 登陆 Contact 注册 Help 与我们联系
Currently Being Moderated

索尼爱立信手机 Java™ ME 签名指南

VERSION 4

Created on: Jul 2, 2009 3:45 AM by 麦克学开发 - Last Modified:  Oct 12, 2009 4:21 AM by 麦克学开发

本文描述了如何对Java TM ME MIDlets进行签名以适用于索尼爱立信手机,使用哪些证书以及怎样避免缺陷

 

  • 背景

  • 证书

    • 证书使用期限

  • Java Verified

  • 证书颁发机构 (CA)

    • VeriSign

    • Thawte

  • 工具

    • keytool.exe

    • Sign MIDlet utility

  • 获取代码签名证书– 一个实例

  • 许可权限设置

  • 许可权限属性

  • 常见问题解答

 

 

 

背景

通常 Java ME 应用程序签名用于移除系统提示,即那些当应用程序访问不同的受保护的API时,如Internet文件系统或照相机等,显示给用户的系统提示。应用程序签名确实能实现这种功能,但是签名不仅仅是为了提升用户体验和应用程序的易用性,也是出于对安全性和可靠性的考虑。

签名保持了应用程序的完整性

开发者 - 知道没有人能够在不破坏 Jad 文件中签名的情况下对应用程序做任何改变。

销售渠道 - 能够信任被提交的内容,并确信该内容是从开发者那里发布的原始内容。

客户 - 用户能够看到应用程序已被签名,以及该签名是由何公司签署的,这能够带来可信度。

 

 

 

证书

进行 MIDlet 签名时,签名必须适用于索尼爱立信手机中的任可用的 Java 根证书。不能安装一个自制根证书。

在索尼爱立信手机上,签名时使用的最普遍的第三方证书是:

  • GeoTrust CA for UTI
  • Thawte Premium Server CA
  • VeriSign Class 3

 

注意,唯一一个在索尼爱立信 MIDP2 手机上总是可用的证书是 GeoTrust CA for UTI 证书,它是被 Java VerifiedTM 使用的证书。

 

 

 

 

 

在所有的索尼爱立信手机中,都可以看到哪些 Java 根证书是可用的。通常在安全 -> 证书菜单中可以看到。

 

 

 

 

 

 

证书使用期限

 

一个 Thawte VeriSign 证书通常在购买时附有1-3年的有效期。而当使用 Java Verified 时,该证书签名将会在10年间有效。

这使得 Thawte VeriSign 证书被广泛应用于开发过程中的签名。

 

应用程序的签名和其被签名时使用的证书具有相同的有效期,了解这一点非常重要。如果证书过期,应用程序就无法被安装。对于有效期的检查仅在安装时进行,所以一个安装后的应用程序是不会过期的。

 

 

 

 

 

Java Verified

Java Verified是一个由索尼爱立信支持的行业驱动的测试和签名计划。

使用Java Verified应用程序将经受测试,如果测试成功,MIDlet 将会被使用UTI证书进行签名。UTI 证书是唯一在所有索尼爱立信手机上可用的Java ME应用程序的证书。

Java Verified计划所指定的测试实验室有:

  1. Babel Media
  2. NSTL美国国家软件测试实验室
  3. RelQ
  4. Sogeti

 

 

 

通过了 Java Verified 计划的应用程序将有权使用 Java Powered 标志.

 

 

在这里读更多>> http://developer.sonyericsson.com/javaverified

在此注册和提交要测试的应用程序>> http://www.javaverified.com/

 

 

 

 

 

 

证书颁发机构(CA)

证书颁发机构是管理根证书的法律实体。从CA购买任何代码签名证书前,需确认相应的根证书在手机上是可用的。

 

VeriSign 

http://www.verisign.com/

 

 

Thawte

http://www.thawte.com/

 

 

 

Tools

 

keytool.exe

Keytool是一个基于命令的用于管理密钥仓库的工具。密钥仓库被用于对 MIDlet进行签名。

Keytool包含在Java SE开发工具包中。

Program Files\Java\jdk1.6.0_02\bin

  • 使用该工具可以创建私有和公有密钥。
  • 可以创建要发送给CA的用于申请证书的证书请求文件(.cer)。
  • 用来将证书导入到密钥仓库中。

 

 

MIDlet签名工具

在索尼爱立信的WTK(无线开发工具包)中,MIDlet签名工具被用于管理密钥仓库和对MIDlet进行签名。

  • 新的密钥对 在该工具使用的密钥仓库(Keystore)中创建一对新的私有密钥和公有密钥。
  • 生成CSR – 创建要发送给CA的用于申请证书的证书请求。
  • 导入证书 将收到的由CA颁发的证书导入到密钥仓库中。
  • 签署MIDlet套件 证书导入后,就可以对MIDlet签名了。

 

 

 

获取代码签名证书 一个实例

1) 使用 keytool.exe MIDlet 套件签名工具生成新的私有密钥和公有密钥。

 

keytool -genkey -alias mykey -keyalg RSA -keystore mykeystore.sks

 

 

注意。只有注册公司才能够申请证书,并确认在组织一栏中填写公司全称。

 

 

 

 

 

应使用第三方安全域。

 

 

 

 

2) 创建证书请求

 

keytool -certreq -alias mykey -keystore mykeystore.sks -file mykey.csr

 

 

 

 

3) 选择证书颁发机构

VeriSign: http://www.verisign.com/

Thawte: http://www.thawte.com/

The UTI certificate is only available though Java Verified.

 

 

决定去哪里申请 Java 代码签名证书

在注册过程中,应提交证书请求

 

 

 

-

 


BEGIN NEW CERTIFICATE REQUEST----

MIIB0jCCATsCAQAwgZExCzAJBgNVBAYTAlNFMQ8wDQYDVQQIEwZTd2VkZW4xDjAMBgNVBAcTBUtp

c3RhMS8wLQYDVQQKEyZTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQjEYMBYG......................................n

-


END NEW CERTIFICATE REQUEST----

 

 

4) 一旦证书请求被 CA 批准后,证书就可以被下载了。证书应该以 PKCS #7 的格式下载。可以使用记事本将证书保存为mycert.txt文件。

 

 

-


BEGIN PKCS #7 SIGNED DATA----

DjAMBgNVBAcTBUtp

c3RhMS8wLQYDVQQKEyZTb255IEVyaWNzc29uIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBBQjEYMBYG......................................n

-


END PKCS #7 SIGNED DATA----

 

 

5) 导入证书到密钥仓库

 

 

 

keytool -import -file mycert.txt -alias mykey -keystore mykey.sks

 

 

 

如果密钥对放在另外一个密钥仓库中,可以通过点击“导入密钥对”按钮将密钥导入到 MIDlet 签名工具所使用的密钥仓库中。如果密钥对是使用 keytool 创建的,但想使用 MIDlet 签名工具对 MIDlet 进行签名,同样可使用该方法。

 

 

6) 一旦密钥对和证书被放在密钥仓库中,密钥仓库就可以用来签署 MIDlet 套件了。

 

 

重点 – 在签署MIDlet之前,需确认适当的许可权限已经添加到 JAD 文件和 MANIFEST 文件中了。

使用 MIDlet 签名工具,只需简单地按下签署 MIDlet 套件的按钮,然后选择 JAD 文件。

Java JadTool 也可以被用来对 MIDlet 签名,只需简单地使用两个命令,首先将证书添加到 JAD 文件中,然后再将签名添加到 JAD 文件中。

 

 

java -jar JadTool.jar -addcert -alias mykey -keystore mykey.sks -inputjad MIDlet.jad -outputjad MIDlet.jad

java -jar JadTool.jar -addjarsig -keypass ****** -alias mykey -keystore mykey.sks -inputjad MIDlet.jad -outputjad MIDlet.jad -jarfile MIDlet.jar

 

 

注意,证书和签名放置在 JAD 文件中,所以一个已被签名的应用程序在安装时必须使用 JAD 文件,否则它将被安装为未签名的应用程序。

在索尼爱立信手机上,使用 JAD 文件安装应用程序有几种方式。

空中下载 (OTA) - 将应用程序、JAD 文件和 JAR 文件放在一台 Web 服务器上,使用手机上的浏览器下载 MIDlet

本地 JAD 文件和 JAR 文件复制到手机的文件系统中。在手机上,选择 JAD 文件安装应用程序。

设备管理器 – 在适用于 Java ME 平台的索尼爱立信 SDK 中,一个叫做设备管理器的工具能够被用来在手机上安装应用程序

在所有这些情况下,都需确认选择了 JAD 文件。

 

 

 

 

许可权限设置

在这里找到索尼爱立信手机上使用的许可权限设置列表。

http://developer.sonyericsson.com/getDocument.do?docId=99421

在一个 MIDlet 被安装之前,不可能为该 MIDlet 指定默认的设置。每个应用程序的许可权限设置都可以在其被安装后进行修改。这可以在每个 MIDlet 的设置菜单中完成。

从索尼爱立信 JP8 手机开始,可以指定默认的许可权限级别,指定许可权限级别为“受信任的”,可以将所有可用的安全设置受到的限制降至最低

 

 

 

||||

 

 

在最新的索尼爱立信 JavaTM ME 手机上,当用户被提示使用 API 时,用户可以在运行时修改许可权限设置

 

 

 

 

 

许可权限属性

 

一些 API 在执行时要求许可权限,因为对于一个被签名的 MIDlet 来说,许可权限应该在签名前被添加到 JAD MANIFEST 文件中。这一步通常通过 IDE 来完成。

Jad / MANIFEST 属性:

 

MIDlet-Permissions: javax.microedition.io.PushRegistry, javax.microedition.io.Connector.sms

 

在这里找到许可权限的属性列表>>>; Java ME permission attributes in Jad and MANIFEST

 

 

 

 

 

常见问题解答 

我的 MIDlet 已签名,为什么安装却失败了?

1) 确认手机上设置了正确的日期;证书仅在一定时期内有效。

2) 确认所使用的证书在手机上是可用的。

-


 

 

在安装了我的已签名的 MIDlet 之后,我不能使用一个 HttpConnection 连接到 Internet。

对于一个要求许可权限的 API 来说,许可权限应该在 MIDlet 被签名前添加到 JAD MANIFEST 文件中。

MIDlet-Permissions: javax.microedition.io.Connector.http

-


 

 

我的 MIDlet 已签名,我也已经添加了使用 socket 连接的许可权限,但还是提示安全异常?

一些运营商不允许第三方的签名应用程序使用所有的 API, 请检查您是否在使用一部运营商品牌的手机

-


 

 

我有一个已签名的 MIDlet,为什么安装却失败了?

确认 MIDlet 签名所使用的证书在手机上是可用的。

JAD 文件中找出 MIDlet 签名使用了什么证书。

MIDlet-Certificate-1-1:MIIDSjCCAjKgAwIBAg...........................n

1) 复制 MIDlet-Certificate 属性值。

2) 用记事本创建一个文本文件,将属性值复制到该文件中。

3) 将文本文件重命名为 .cer 文件。

4) 打开这个 .cer 文件,就可以读取证书信息了。

 

 

Attachments:
Average User Rating
(2 ratings)
My Rating:




There are no comments on this document

More Like This

  • Retrieving data ...