内容简述
背景
  一个好的J2ME 应用程序,最后就是在程序读取系统资源的时候(网络,sms,pim,file等)无需弹出烦人的提示。本文的目的就是探讨这方面的知识。

内容介绍
  J2ME 的证书可以解决上面提出的问题,本文主要是对网络上的一些解决方案跟经验做次总结

预期读者跟建议
  需要对J2ME程序签证的开发者,假设开发者已经熟悉了J2ME。

由于本人水平有限,存在一些错误的地方,希望大家多多交流。

MIDlets 签证
什么是Java 数字证书
  原文链接 http://www.blogjava.net/zpuser/archive/2006/07/22/59528.html

   也许您对"数字证书"这一概念还很陌生,其实,数字证书就是标志网络用户身份信息的一系列数据,用来在网络通讯中识别通讯各方的身份,即要在 Internet上解决"我是谁"的问题,就如同现实中我们每一个人都要拥有一张证明个人身份的身份证或驾驶执照一样,以表明我们的身份或某种资格。
数字证书是由权威公正的第三方机构即CA中心签发的,以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性,从而保障网络应用的安全性。

   数字证书采用公钥密码体制,即利用一对互相匹配的密钥进行加密、解密。每个用户拥有一把仅为本人所掌握的私有密钥(私钥),用它进行解密和签名;同时拥 有 一把公共密钥(公钥)并可以对外公开,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这 样,信息就可以安全无误地到达目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。通过数字的手段保证加密过程是一个不可逆过程,即只有用 私有密钥才能解密。在公开密钥密码体制中,常用的一种是RSA体制。

  用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:
(1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;
(2)保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。

  数字证书可用于:发送安全电子邮件、访问安全站点、网上证券、网上招标采购、网上签约、网上办公、网上缴费、网上税务等网上安全电子事务处理和安全电子交易活动。

  字证书的格式一般采用X.509国际标准。目前,数字证书认证中心主要签发安全电子邮件证书、个人和企业身份证书、服务器证书以及代码签名证书等几种类型证书。 

  数字证书的格式遵循ITUTX.509国际标准。一个标准的X.509数字证书包含以下一些内容:

  1. 证书的版本信息;
  2. 证书的序列号,每个证书都有一个唯一的证书序列号;
  3. 证书所使用的签名算法,如RSA算法;
  4. 证书的发行机构(CA中心)的名称,命名规则一般采用X.500格式;
  5. 证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950年-2049年;
  6. 证书拥有者的名称,命名规则一般采用X.500格式;
  7. 证书拥有者的公开密钥;
  8. 证书发行机构(CA中心)对证书的数字签名。

X.509数字证书结构 (第三版)

版本号..................证书的版本标识符(例如,版本3)
序列号 .................标识证书的唯一整数
签名....................用于签证书的算法标识
颁发者 .................证书颁发者的唯一识别名
有效期 .................证书有效时间段
主体....................证书拥有者的唯一识别名
主体公钥信息 ...........证书拥有者的公钥(和算法标识符)
颁发者唯一标识符........颁发者的可选唯一标识符
主体唯一标识符 .........主体的唯一识别符
扩展部分 ...............可选的扩展

字段说明:
①版本号—标识证书的版本(版本1、版本2或是版本3)。
②序列号—由证书颁发者分配的本证书的唯一标识符。
③签名 —签名算法标识符,由对象标识符加上相关的参数组成,用于说明本证书所用的数字签名算法。例如,SHA-1和RSA的对象标识符 就用来说明该数字签名是利用RSA对SHA-1杂凑加密。
④颁发者—证书颁发者的可识别名(DN),这是必须说明。
⑤有效期—证书有效期的时间段。本字段由”Not Before”和”Not After”两项组成,它们分别由UTC时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。
⑥主体 —证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。
⑦主体公钥信息—主体的公钥(以及算法标识符),这一项必须说明。
⑧颁发者唯一标识符—证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
⑨主体唯 一标识符—证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
⑩扩展 —可选的标准和专用的扩展(仅在版本2和版本3中使用),它们包括:
◆Authority密钥标识符—证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。
◆密钥使用—一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等。
◆扩展密钥使用—由一个或多个对象标识符(OIDs)组成,可以说明证书密钥的特殊用途。有Internet策略限定,存取描述符限定[3]等,请参见RFC2459。
◆CRL分布点—指明CRL的分布地点。
◆私钥的使用期—指明证书中与公钥相联系的私钥的使用期限,它也有Not Before和Not After组成。若此项不存在时,公私钥的使用期是一样的。
◆证书策略—由对象标识符和限定符组成,这些对象标识符说明证书的颁发和使用策略有关。
◆策略映射—表明两个CA域之间的一个或多个策略对象标识符的等价关系,仅在CA证书里存在。
◆主体别名—指出证书拥有者的别名,如电子邮件地址、IP地址等,别名是和DN绑定在一起的。
◆颁发者别名--指出证书颁发者的别名,如电子邮件地址、IP地址等,但颁发者的DN必须出现在证书的颁发者字段。
◆主体目录属性—指出证书拥有者的一系列属性。可以使用这一项来传递访问控制信息

  上面的文章是了解数字证书的基本知识,下面这篇则介绍在java环境中怎么使用。

  对于J2ME 的程序来说,基本上存在两个证书颁发机构。

Thwate。地址是:www.thawte.com

VeriSign 地址是:www.verisign.com

  他们两者的区别是VeriSign 通用性比较广,但是价格比较高。Thwate通用性差点,而且同一个证书存在有Nokia S40,S60部分机器不支持的情况,但是价格比较便宜。

  Thawte 国内代理商: http://thawte.wosign.com/Thawte_CodeSigning.htm

  VeriSign 国内代理商:http://www.verisign.com/cn/authentication/
 

MIDlet Code signing certificates证书申请流程
  VeriSign 的申请流程

  证书单价: 400美元/年

  一个证书,包括一对密钥(公钥/私钥对)

  私钥用于jar文件摘要的加密,公钥用于对应的解密。

  用户设备认证过程:

  我们把“jar文件摘要加密后的信息“存放在jad描述文件中,用户安装我们的程序时,用户设备(手机)自动识别该属性,并对下载的jar文件做摘要,同时对jad文件中所包含的认证证书进行合法性检测,若不合法就退出安装或提示授权失败,若合法则提取其中的公钥对“jar文件摘要加密后的信息“解密,并相互比较,相同则安装继续,否则就退出安装。

  购买证书包括以下几步:

第一步:输入具体技术负责部门(人)的联系方式(信息)。


*First Name: lee

* Last Name:james

* Title:Certificate for ****

* Company:Cping.net

* Address1: NO140 WenSan Road HangZhou City

* City:HangZhou

* State/Province:ZheJiang

* ZIP/Postal Code: 310012

* Country:China

* Telephone: 0571********

Fax: 0571********

* E-mail:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。

 
第二步:输入相关的证书信息。

粘贴证书签名申请(Certificate Signing Request (CSR))文件内容,例如mbkey.csr

的内容如下:

-----BEGIN NEW CERTIFICATE REQUEST-----

MIIBqjCCARMCAQAwajELMAkGA1UEBh MCQ04xCzAJBgNVBAgTAlpKMREwDwYD VQQHEwhIYW5nWmhv

dTETMBEGA1UEChMKYmxv2ZNuLmNvbT ETMBEGA1UECxMKRGVwIG9mIHRlYzER MA8GA1UEAxMIamFt

ZXNsZWUwgZ8BBQADgY0AMIGJAoGBAM dWU29wDQYJKoZIhvcNAQEGs8c5uaa6 N4x3Q4Qp697VL17A

jKQon3447DIrDBN8xDNYBxZPKeQuGZ swhuLnOGY4+ Dc4r6MvcfyltjW2sjutjaBvsu+ 3ubzkVva0

3U9I9RKrY9UjxH1EjDq/ UF7iVdI1OgZ/ 7ORd2YiMZEUN9TBpuzGiKS+ ZupMrbbNdAgMBAAGgADAN

BgkqhkiG9w0BAQUFAAOBgQCvCxgKCW zGnWzzBPTi8D3dqNAD7ec4tsZZD+ 40JoBaXzQL1LtKAcTN

pi/NPK9QFXDGnV/QFs/ BNK5yjCH6NCdWZ4GelIL6V/ i8zMiSB1r7kZRKXVvNtMAyNnMqW1R9 481z

x0zMlqnXqiwXnfmMFIBP4TrrZ7cgzL o8vpEjxhSgzQ==

-----END NEW CERTIFICATE REQUEST-----

第三步:检查证书信息并输入这个证书的使用密码。

第四步:输入公司的联系方式(信息)。


 
第五步:输入付款方式和相关信息。


第六步:确认并提交定单

申请者确认相应的提交信息。

第七步:打印确认书并查看VeriSign的签定过程。

若确认收到定单,并已交费,则VeriSign对申请者提交的信 息正确性进行签定。大致5到15个工作日。视具体情况而定。 一旦签定符合实际,则返回相应证书,申请成功结束。

申请完成,等待VeriSign,Inc签定结果。

参考:

https://securitycenter. verisign.com/celp/enroll/ selectOptions?bundle_id= JavaCS&originator=Java& application_locale=VRSN_US& checkPrice=false&promoCode=

http://eclipseme.org/docs/ refSigning.html 
 
 

下面是Thwate的申请地址:https://www. thawte.com/process/retail/new_ devel_collect_details 
 

3U9I9RKrY9UjxH1EjDq/UF7iVdI1OgZ/7ORd2YiMZEUN9TBpuzGiKS+ZupMrbbNdAgMBAAGgADAN

BgkqhkiG9w0BAQUFAAOBgQCvCxgKCWzGnWzzBPTi8D3dqNAD7ec4tsZZD+40JoBaXzQL1LtKAcTN

pi/NPK9QFXDGnV/QFs/BNK5yjCH6NCdWZ4GelIL6V/i8zMiSB1r7kZRKXVvNtMAyNnMqW1R9481z

x0zMlqnXqiwXnfmMFIBP4TrrZ7cgzLo8vpEjxhSgzQ==

-----END NEW CERTIFICATE REQUEST-----

第三步:检查证书信息并输入这个证书的使用密码。