`

Nokia MIDlet代码签名证书申请和使用指南

    博客分类:
  • J2ME
阅读更多
 

VeriSign 和 Thawte 的 Java代码签名证书可以用于数字签名运行J2ME MIDlet(MIDP 2.0)代码,支持诺基亚和索爱等手机的MIDlet应用软件,运行签名后的MIDlet Suite就会显示软件发行商名称,否则会显示让用户不敢下载的警告“应用软件来源未知,继续?”。同时,签名后访问网络等都不会弹出烦人的警告框了,让手机应用更加安全!但请注意: 并不是所有手机都支持数字签名机制, Thawte Java代码签名证书对索爱手机支持多些,而VeriSign Java代码签名证书则对诺基亚手机支持多些,您可以提供使用两种证书签名的两种版本供用户选择安装,使得您的MIDlet软件适用手机范围更广和支持最多的手机型号。

本签名指南是基于Nokia Developer's Suite for J2ME 的使用指南编写,如果您还没有NDS for J2ME,您到Nokia网站上下载 NDS3.0签名工具。 或 下载 最新版的 Carbide.j 1.5 开发工具。请注意:您也可以直接使用 Sun Java Wireless Toolkit 2.5.1 中文版来签名针对Nokia手机的MIDlet,如果您还没有此开发工具可以到 SUN 网站上 下载 合适的开发工具

同时,请一定要先参考: MIDP 2.0安全机制,充分理解MIDP 2.0的安全机制有助于签名MIDlet的成功部署。

第1步 创建Keystore和私钥 Step 1. Create a Keystore and Key Pair:

如图1所示,点击左边主菜单“Sign Application Package”,就会显示缺省的测试证书(default),如果您已经有了Java代码签名证书的密钥对(.sks文件)或您已经有了微软代码签名证书(.pfx)文件,则您可以点击“Import Key Pair”导入您的证书密钥对,导入时需要输入您的私钥密码。如果您还没有申请证书,则您可以点击“New Key Pair”来生成密钥对(Keystore和私钥),正确填写证书信息后点击“Create”即可。
但请注意以下3点:
(1) 填写国家(Country)字段时只能填写国家名称缩写CN;
(2) 在生成密钥对时并没有提示输入私钥密码,但导入时需要输入私钥密码,缺省密码为“password”;
(3) VeriSign代码签名证书不支持中文,请填写正确的英文名称,而Thawte代码签名证书支持中文,您可以根据需要在单位名称、部门名称、所在城市和省份等填写中文名称。

这样就生成了密钥对,如图2所示,点击别名“wotrustcs”就可以显示证书信息,请注意:此时显示的证书颁发者(Issuer)为自己,因为还没有提交CSR申请证书。

第2步 生成证书请求文件(CSR) Step 2. Generate the CSR and request your certificate:

如图3和4所示,选中证书别名后,再点击“Generate CSR”生成CSR文件:wotrustcs.csr,并把此文件发给WoTrust,等待1-2个工作日就可颁发证书。

第3步 把证书导入到 keystore中 Step 3. Import the certificate reply into your keystore:

一旦您的Java代码签名证书颁发,VeriSign的证书则附在颁发通知邮件的下面,直接完整复制(包括: -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----),并粘贴到记事本上保存为mycert.cer文件即可。Thawte的证书则需要到Thawte网站上去下载,注意选择 PKCS #7 格式证书,此证书格式含有您的证书和根证书链,Keytool要求此格式证书。把此证书使用文本编辑器保存为 myCert.p7b或mycert.cer。再点击“Import Certificate”导入您的证书,如图5所示。一旦导入成功,如图6所示,您会看到此证书的颁发者(Issuer)就是“Thawte Code Signing CA”了。此时,请您马上备份您的证书对(私钥和公钥)keystore文件:ndskeys.ks,最好是备份到光盘或其他电脑上,以便以后导入证书用!一般在开发工具的安装目录下,如:C:\Nokia\Tools\Nokia_Developers_Suite_for_J2ME_3_0\bin 。

第4步 签名MIDlet Step 4.Sign your MIDlet:

您需要Nokia的开发工具(NDS)来签名代码和配置您的应用了,如图7所示,先选中您的证书别名(Alias),在证书详细信息的下面有一个“Sign”按钮,点击“sign”就让您需要签名的应用软件代码,选.jad文件打开即可马上完成签名,提示“Application Package has been signed”(应用软件包已经签名!)。

现在,.jad 就已经包含了您的私钥签名和公钥证书,您可以使用记事本打开JAD文件,会看到已经增加了许多字母,如图8所示,仔细查看就可以看到 MIDlet-Certificate-1-1:后面就是您的签名证书,而 MIDlet-Certificate-1-2:后面就是签名证书 Thawte Code Signg CA, MIDlet-Certificate-1-3:后面就是颁发证书的顶级证书 Thawte Premium Server CA,而 MIDlet-Jar-RAS-SHA1:后面就是使用您的私钥签名JAD代码后的签名摘要。请注意:使用VeriSign Java代码签名证书签名后只有2个证书文件(MIDlet-Certificate-1-1 和 MIDlet-Certificate-1-2)。

第5步 仿真运行和部署已经签名的MIDlet Step 5. Emulate and Deploy your MIDlet:

这样,就完成了MIDlet代码的数字签名,可以正常使用了。如图9所示,会显示“证书:有”,并显示软件发行商的公司名称“组织:”,如图9所示:

我们来对比一下如果没有数字签名安装MIDlet的提示情况,如下图10所示,会显示让用户不敢下载的警告“应用软件来源未知,继续?”,强烈建议用户不要安装没有签名的MIDlet,否则一旦安装了恶意代码,您的手机可能就报废了!

附: 常见问题解答

     如果您使用签名工具,一般都是没有问题,请检查 JAD 文件是否含有 MIDlet-Certificate-1-1 、 MIDlet-Certificate-1-2 、 MIDlet-Certificate-1-3 属性和 MIDlet-Jar-RSA-SHA1 属性。问题往往出在部署过程,主要常见问题有:

1. 不能验证证书

     签名成功后仿真时出现如下图11所示警告信息:

     显示“ System does not recognize who is trying to authorize the application ”,意思是无法验证证书颁发机构。主要有 2 个原因:

     (1) 证书导入问题:您申请证书时会生成私钥和 CSR( 证书请求文件 ) ,在颁发证书给您之前,一定不能删除 NDS 3.0 或 WTK 2.5 等签名工具,也不要再动证书管理,不要再使用自签证书做实验等。而取到证书后,必须在生成 CSR 的同一台电脑上的同一签名工具中导入证书,否则证书不能导入成功;

     (2) 使用的签名证书的根证书没有预置在手机中 ( 包括自签证书 ) ,请一定要购买 Thawte 或 VeriSign 的 Java 代码签名证书,其他 CA 颁发的证书都不支持。

2. JAR 文件已经被修改

     如下图12所示,显示如下警告信息:

     “ The signature of the JAR is invalid ”意思是 JAR 文件签名无效。主要有 2 个原因:

     (1) 签名 MIDlet 后修改了 JAR 文件:也许您发现签名时签名工具读取 JAD 文件,而不是 JAR 文件,这样会误以为签名时是签的是 JAD 文件,而与 JAR 文件无关。其实,签名时会计算出 JAR 文件的 SHA-1 摘要,并把此摘要写在 JAD 文件中。如果您修改了 JAR 文件,则其 SHA-1 摘要就变了, MIDlet 在验证时就会出错。所以,您签名 MIDlet 后,一定不能再修改 JAR 文件,如果要修改,则需要重新签名;

     (2) JAR 文件在网络传输或下载过程中被篡改,可能是下载的原因,也有可能是被其他人非法故意篡改。哪怕是一个字节的修改,也不能通过验证。这就是签名的基本功能之一。

3. 许可不匹配

     如果 MIDlet 中的许可属性 ( MIDlet-Permissions ) 中有一个或多个不属于所属的保护域,则仍然不允许安装。而如果 MIDlet 中的可选许可属性 ( MIDlet-Permissions-Opt ) 中有一个或多个不属于所属的保护 域,会允许安装。

     如下图13所示,如果我们修改 http 许可为: javax.microedtion.io.Connector.htt ,则会 显示如下警告信息:

分享到:
评论

相关推荐

    MIDlet程序自签名方法

    3) 通过JadTool工具,利用上一步骤生成的自签名证书,对MIDlet套件进行签名; 4) 安装自签名证书到目标手机; 5) 安装已签名MIDlet套件到目标主机; 6) 对安装后的程序进行权限设置。 5.说明 详细内容请参考文档...

    midp 2.0 签名指南

    本文是关于如何创建签名MIDlet套件的指南,遵循MIDP 2.0版本[MIDP 2.0]和无线行业 Java(TM)技术规 范[JTWI]。本文假设您通过阅读诺基亚论坛文档 Brief Introduction to MIDP Programming [MIDPPROG] 等方式,已经...

    黑莓MIDlet开发指南

    黑莓MIDlet开发指南 BlackBerry MIDlet Development Guide V4.0 介绍如何使用黑莓JDE开发用于黑莓手机的标准MIDlet程序。 本文档版权属于RIM,仅用于学习交流,切勿用于商业用途。

    Midlet Signing

    详细介绍了midlet程序签名机制,包括三种信任域的不同、开发过程中使用的签名与产品签名的不同等内容。并基于MOTO手机开发平台给出示例。

    MIDlet控件实例项目(mvc)

    这个是Eclipse项目,MIDlet控件的例子,分成input, output 和midlet.有助于理解控件的使用和分层。

    读取MIDlet的系统属性

    J2ME读取MIDlet的系统属性,用于判断J2ME获取的各个属性

    J2ME开发资料整理-在MIDlet中使用图标(附范例)

    我在一个项目开发中整理的资料,不知道有没有人发过。

    MIDLet-Servlet通信

    JAVA移动实现与网络服务器端(servlet)通信实现

    BlackBerry 应用和MIDlet之间的交互

    对于很多没有BlackBerry 应用经验的开发者,或者对于很多现有的J2ME 的系统,如果以最小的代 价和BlackBerry 应用交互,或者和BlackBerry...个非常有用的能力:它允许一个MIDlet 套件和另一个MIDlet 套件共享记录存储。

    MIDlet通过蓝牙与电脑通信的案例

    MIDlet通过蓝牙与电脑通信的案例 MIDlet通过蓝牙与电脑通信的案例

    MIDlet与J2EE结合开发移动商务应用

    MIDlet与J2EE结合开发移动商务应用.pdf

    kse-543.dmg keystore-explorer: 5.4.3

    对Java代码进行签名KeyStore Explorer提供了以JAR和J2ME“ MIDlet”形式对Java应用程序进行数字签名的功能。广泛的格式支持KeyStore Explorer支持多种KeyStore,密钥对,私钥和证书格式,并可在它们之间进行转换。请...

    如何对J2ME Midlet进行数字签名

    本教程从一开始就以简单的语言说明了如何对Java Mobile Midlet进行数字签名。

    Midlet.Pascal.v2.0

    使用pascal语言开发手机java游戏的工具.

    Midlet2.rar_midlet_simple

    this is simple example of j2me midlet by using lwuit library in which simple form is displayed

    如何将MIDlet应用移植到BlackBerry

    不同的开发人员和不同的项目。本文将逐一介绍把MIDlet 程序移杆到BlackBerry 平台上的 各种方法,让读者可以轻松进入BlackBerry 开发世界。 注意,本文针对在j2me 开发方面有一定经验并且有需要将现有的MIDlet 应用...

    诺基亚Java用户界面API程序员指南

    本程序员指南讲述如何使用诺基亚Java 用户界面 API 。诺基亚用户界面 API 是标准的移动 信息设备描述(Mobile Information Device Profile ,MIDP )API (请参阅 [MIDP])的扩 展,它在诺基亚支持MIDP-1.0 的电话...

    破解手机使用软件需要证书确认的文档!(绝对有效!)

    下面提供一个文档,只许覆盖安装软件的目录中的原permfile.txt证书文件就可以畅快使用软件,绝对不会再弹出确认!下载后使用方法: 手机USB连接电脑,然后打开手机TF卡的磁盘,点击工具-文件夹选项-查看-显示所有...

    midlet java 浮点运算函数

    做midlet开发,如果需要用到乘幂运算,会用到这个函数。 文件名是float.java 里面包含了pow函数等midlet原本不具备的数学运算函数。

    RMS-MidLet例子

    RMS-MidLet例子,非常有助于理解RMS。而且是分层的。J2ME手机存储的程序,Eclipse项目。

Global site tag (gtag.js) - Google Analytics