您的位置:首页 > 其它

如何使用J2ME Wireless Toolkit的安全特性

2009-07-07 13:50 591 查看
准备工作:
必须安装J2ME无线工具,从http://java.sun.com/j2me即可获得。

一、J2ME无线工具的安全特性简介:
J2ME无线工具包结合了MIDP2.0提供的增强安全特性和提供给我们的使用新安全特性的工具。这些加强的安全特征为:
·程序签名
·不同级别的安全域
·通过使用证书验证程序的发送者的身份
·验证设备接收的应用程序的完整性

二、签名MIDlet套件:
当我们建立和打包我们的MIDlet套件(有关介绍见http://www-900.cn.ibm.com/developerWorks/cn/java/j-j2me/index.shtml)时,可以使用J2ME无线工具包提供的安全工具对MIDlet套件进行签名。J2ME无线工具包不但能够使用已经存在的一对公钥和私钥签名MIDlet套件,而且还能使用我们生成的一对新的公钥和私钥。每对密钥与一个证书相关联。通过赋值一个安全域给一个证书,使持有可信级别证书的持有者有访问受到保护的APIs和其它一些APIs。
MIDlet套件能被赋值到以下的一种域类型:
·Untrusted-MIDlet套件的来源和jar文件完整性不被设备信任(例如:一个未签名的MIDlet套件)。
·Trusted-由jar文件表示的MIDlet套件被使用设备能够验证的证书签名。
·Minimum-一个安全域:所有访问受到保护的APIs权限都被拒绝,包括访问推入(push)功能和网络协议。
·Maximum-与Trusted相同。一个安全域:所有访问受到保护的APIs权限都被允许,包括访问推入(push)功能和网络协议。
签名的过程很明显是调用keytool工具、JADtool、MEKeytool的复杂过程。而J2ME无线工具包中的安全工具由我们调用的图形界面构成。它能够完成整个的处理过程,而不需要使用命令行工具。使用安全工具,我们能做到:
·建立一对新的密钥并为它提供一个别名
·为J2ME Keystore从J2SE Keystore的一对已经存在的密钥中复制证书
·为MIDlet套件的JAD文件添加一对密钥证书
·数字化的签名MIDlet套件的jar文件,为MIDlet套件的JAD文件签名
·删除旧的证书
J2ME无线工具包建立一对密钥时,证书被保存在ME keystore文件中。
访问http://java.sun.com/products/midp的描述。来获取更多关于MIDP2.0

三、建立一对密钥并对MIDlet套件签名:
如果我们需要建立一对密钥,我们可以使用New Key Pair对话窗口生成。在必须提供一个别名,一个唯一的名字,组织名后,这个工具将生成由别名所引用的一个公钥和一个私钥。这对蜜钥被存放在keystore中。一个与这对蜜钥相关的证书也被生成,我们将被要求提供一个与这证书相关联的安全域。与这对密钥相关的证书被自动导入到默认模拟器的keystore中。我们后面将使用它签名MIDlet套件。
注意-在无线工具包环境下的生成一对密钥和签名MIDlet的行为只是为了测试的目的。签名是个虚拟的行为而不是实际的事件。我们运行我们的应用程序在一个实际设备时,必须要获得一个从被我们的设备所识别的证书授权机构授权的证书。
生成一对密钥的步骤:
1. 选择工程-〉Sign in the KtoolBar。
签名MIDlet套件的窗口打开。另一个打开签名MIDlet套件的窗口的方法是选择File-〉Utilities 并点击Sign MIDlet按钮。
2.在签名MIDlet套件的窗口中点击New Key Pair,提供以下信息:

新建密钥对的别名

包含密钥对的存储keystore的服务器名.

组织名称

这是生成密钥对的最小要求。
3.点击Create,然后提供一个与证书相关的安全域名。
这对密钥被生成,别名被加到别名列表中。
我们能够在J2SEKey Detail面板中看到这个证书和密钥的信息。这些信息包括证书主题和发行者的唯一名称(DN),证书的序列号,证书的有效期,使用的加密算法,证书授权者的数字签名。一个证书的拷贝被自动存放到了默认模拟器的keystore中。
4. 点击签名MIDlet窗口,从文件选择器中选择MIDlet套件的JAD文件。
证书被拷贝到了.jad文件。Jar文件被数字化签名了。签名成功时一个确认对话框会出现。如果签名失败,则一个带有错误信息和错误原因的对话框会出现。
注意-只有在发布应用程序时使用应用程序管理系统设置为over-the-air (OTA)方式运行,应用程序(使用签名的jad和jarMIDlet套件)才能正常运行。

四、导入加密密钥对MIDlet套件签名:
我们能够使用一个已存在的密钥对MIDlet套件进行签名。
1.在签名MIDlet套件的窗口中点击Import Key Pair,从文件选择器中选择keystore文件。
2.输入访问keystore的密码。
3.在keystore的别名列表中选择别名
4.输入证书引用的别名
5.选择与证书相关联的安全域
6.在签名MIDlet套件窗口中点击Sign MIDlet Suite,从文件选择器中选择MIDlet套件的JAD文件。
签名成功时一个确认对话框会出现。如果签名失败,则一个带有错误信息和错误原因的对话框会出现。

五、删除别名:
删除一对密钥:
1. 在签名MIDlet套件的窗口中选择要删除的密钥对
2. 选择Action->Delete Selection
一个确认对话框会出现。点击Yes继续删除操作。那个引用被删除的密钥对的别名将从列表中被删除。

六、管理默认模拟器证书:
默认模拟器自带一个默认的证书集。证书被用来检查网络连接的有效性和签名MIDlet套件的有效性。如果正使用一个安全协议访问web站点,例如HTTS或者SSL,站点的证书将被检查是否有效。MIDlet套件的证书也将被用来检查访问站点是否有权限。如果站点证书无效或者MIDlet套件没有权限,则访问站点的行为将被拒绝。当我们虚拟一个网络传输时,在默认模拟器的keystore中的证书将被检查。关于如何在无线工具包环境下为网络协议添加API权限请参考Adding API Permissions"
J2ME工具包提供的证书管理器能帮助我们维护在默认模拟器的keystore中的证书。如果我们添加一个证书到默认模拟器的证书集,我们能通过从J2SE keystore导入到默认模拟器 keystore的证书或者从证书授权机构获取证书并导入到默认模拟器 keystore中。当证书过期或者证书不使用,我们能够从keystore中删除它。
通过证书管理器中的证书列表我们能看到在J2ME中的证书。当然也能通过使用命令行工具,如MEKeyTool,显示证书列表。关于如何使用MEKeyTool请参考Appendix D, "Command Line Utilities.”。

查看证书:
1.选择File -> Utilities,在Utilities对话框中点击Manage Certificates按钮。
打开的J2ME证书管理窗口显示了J2ME keystore文件中的证书。
2.从J2ME Key Detail面板中选择证书,查看其详细信息。

导入证书:
我们能通过从J2SE keystore导入到默认模拟器 keystore的证书或者从证书授权机构获取证书并导入到默认模拟器 keystore中。
选择File -> Utilities点击Manage Certificates按钮。
从J2SE Keystore导入证书:
1. 选择Action -> Import J2SE Certificate.
2. 提供一个默认安全域给导入的证书.
3. 从文件选择器中选择证书存放的keystore 文件.
默认的keystore文件为keystore.sks.
4. 输入访问keystore时的密码。
默认的keystore password为password.
5. 从别名列表中选择一个证书别名。
证书出现在J2ME Keystore的证书列表中,我们能够选择证书,并从J2ME Key Detail面板中选择证书,查看其详细信息。

从证书授权导入证书:
为了从CA获得一个证书,我们必须生成一个证书请求。当我们接收到证书时,便能通过证书管理器将证书导入到默认模拟器中。
1. 点击Import Certificate,从文件选择器选择一个证书.
证书使用.cer作为扩展名。
2. 从安全域对话框中选择安全域
证书被拷贝到默认模拟器的keystore中,并出现在证书管理器的证书列表中。

管理其它Keystores的证书:
如果在J2ME Keystore中有不止一个keystore文件,我们能够通过证书管理器打开这个keystore文件查看此keystore中的证书。当然也能使用证书管理器删除这个keystore文件中的证书。
打开另一个keystore:
· 点击Open Keystore,从文件选择器选择keystore 文件。
总结一下:
J2ME无线工具包安全特性的组成部分:密钥证书-〉Keystore。
其中密钥证书(由于证书与密钥相关所以在这里作为一个整体看待)可以使用工具生成,也可从J2SE的Keystore导入。但是只有在测试时,使用生成的密钥证书的程序才能正常运行。Keystore可以看作密钥证书的集合,用于保存证书。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐