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 ,则会 显示如下警告信息:
|
相关推荐
- **添加证书信息到JAD文件**:使用JadTool工具将自签名证书的信息添加到MIDlet的JAD文件中。 - **添加签名信息到JAD文件**:通过JadTool工具,将签名信息添加到JAD文件中,确保MIDlet可以被正确验证。 ##### 5. ...
- **开发过程中的签名**: 在开发阶段,为了方便调试和测试,开发者通常会使用自签名证书对Midlet进行签名。这种签名方式主要用于内部测试,不具备广泛的认可度。 - **产品签名**: 当Midlet准备发布时,需要使用由...
4. **签名MIDlet**:使用私钥和从CA获得的证书对MIDlet进行签名。 5. **验证签名**:最后一步是对已签名的MIDlet进行验证,确保签名的有效性。 #### 五、案例分析 案例分析部分通常会提供一些具体的实例来帮助...
《黑莓MIDlet开发指南》(BlackBerry MIDlet Development Guide V4.0)是一份详细介绍如何使用黑莓JDE(Java Development Environment)开发适用于黑莓手机的标准MIDlet应用程序的技术文档。 #### 二、文档概述 该...
本文将深入探讨如何在MIDlet中使用图标,并通过示例代码进行解析。 首先,了解MIDlet中的图标主要分为两类:应用程序图标和警告图标。应用程序图标通常在手机的主屏幕上显示,代表MIDlet的视觉标识;而警告图标则...
为了开发和运行MIDlet,开发者通常会使用Eclipse的J2ME Wireless Toolkit (WTK) 或者NetBeans的Mobile Pack。这些工具集提供了模拟器来测试应用程序,确保它们能在不同类型的设备上正常工作。 7. **调试与优化** ...
签名过程涉及生成密钥对、创建签名证书以及使用工具(如`jarsigner`)对MIDlet进行签名。 ##### 使用Carbide进行签名 Carbide是诺基亚推出的一款IDE,支持MIDlet的开发和签名。通过Carbide IDE,可以直接进行...
在Java移动领域,MIDLet(Mobile Information Device Profile Application)是J2ME(Java 2 Micro Edition)平台上的一个应用程序接口,主要用于开发在小型设备如手机或掌上电脑上的应用程序。MIDLet与Servlet的通信...
通过对诺基亚后台代码的详细解析,我们可以更好地理解如何在塞班4系统中有效地管理和控制应用的后台行为。这些配置选项不仅有助于提升用户体验,还能确保应用在不同场景下的稳定运行。对于开发者而言,合理利用这些...
首先,让我们看一个简单的示例代码,该代码创建了一个名为`DetectMIDlet`的MIDlet,它展示了一些关键的系统属性: ```java import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class...
这可以是免费或付费的,例如,Sun Microsystems 提供了一个名为“Oracle Java ME SDK”的免费工具,其中包含了自签名证书的生成器。 2. **创建密钥对**:使用证书生成工具创建一个密钥对,包括一个私钥和一个公钥。...
- **生成证书签名请求(CSR)**:申请由权威机构签发的证书。 - **导入公钥证书**:将获得的证书添加到工具中。 #### 部署应用 1. **设备部署**:仅限于Windows平台,将应用直接安装到目标设备上。 2. **服务器...
`Midlet2.java` 文件很可能是这个MIDlet类的源代码,包含了MIDlet的实现细节。在该文件中,开发者可能会定义一个名为`Midlet2`的类,该类实现`MIDlet`接口,初始化LWUIT的资源,创建并显示一个包含表单的UI。LWUIT...
在移动设备上开发应用程序,尤其是早期的Java ME(Mobile Information Device Profile)平台,开发者常常使用MIDlet来创建可运行在手机上的小程序。MIDlet是Java Micro Edition(Java ME)的一部分,它允许开发者为...
在Java 2 Micro Edition (J2ME)平台上,MIDlet是移动设备上运行的应用程序。这个案例聚焦于如何让MIDlet利用蓝牙技术与电脑进行数据通信。蓝牙技术允许设备间短距离无线通信,使得MIDlets可以扩展其功能,如传输文件...
MIDP 2.0_Signed_MIDlet_Developers_Guide_v2_0_en.pdf这份官方文档详细介绍了如何为MIDlets创建和管理数字签名,包括使用工具(如keytool和jarsigner)进行签名过程,以及处理证书和密钥库的相关操作。 签名的益处...
4. WTK使用:如何在WTK环境中创建、运行和调试Midlet应用程序。 5. JAR文件打包:了解如何将编译后的Java类打包成.JAR文件,以便在Java支持的设备上运行。 这个项目对于理解移动应用与服务器之间的通信机制,以及...
`Nokia-MIDlet-Original-Display-Size` 和 `Nokia-MIDlet-Target-Display-Size` 这两个配置项分别表示原始屏幕尺寸和目标屏幕尺寸,通常用像素来表示: - `Nokia-MIDlet-Original-Display-Size: 240,400` 指原始...