年前研究“MIDlet程序自签名方法”,并将研究所得记之以文档。盖因所做文档内容颇繁,截图甚多,不便直接发布。时至今日,才有闲时闲情重校文档,择其精要,修葺成文。
1.问题
使用J2ME开发的MIDlet应用套件,往往会在运行过程中弹出烦人的“请求用户授权”窗口。这是由于该MIDlet程序未被CA授权,属于非受信MIDlet(Untrusted MIDlet)。而当非受信MIDlet访问系统敏感API时,出于对手机安全性的考虑,设备就需要显式地获得用户许可。
解决该问题的通常做法是购买权威认证机构签署的证书进行签名,使程序成为受信MIDlet(Trusted MIDlet)。当然,前提是您的手机设备支持该种证书。
但是,权威证书的申请会消耗一定的人力物力,这笔开支对于您兹待签名的MIDlet来说也许较大(一个典型的例子是,开发者为自己的手机设计了一款非商业性MIDlet)。这时,您就可以选择自签名的方法。
2.限制
自签名作为一种特殊的解决方案并不被所有手机支持。所以首先您要确定程序运行的手机是否支持自签名。
对于Nokia的Serial系列来说,自签名不被早期的Serial 40 和如今的S60第三版支持。这对于目前大量的S60第三版手机用户来说真是个坏消息。
3.准备
1) 开发MIDlet程序的IDE工具
2) 管理密钥证书的KeyTool工具
3) 进行套件签名的JadTool工具
4.步骤
1) 为MIDlet套件添加权限声明标签;
2) 通过KeyTool工具创建并导出自签名证书;
3) 通过JadTool工具,利用上一步骤生成的自签名证书,对MIDlet套件进行签名;
4) 安装自签名证书到目标手机;
5) 安装已签名MIDlet套件到目标主机;
6) 对安装后的程序进行权限设置。