內容簡述
背景
一個好的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數字證書包含以下一些內容:
證書的版本信息;
證書的序列號,每個證書都有一個唯一的證書序列號;
證書所使用的簽名算法,如RSA算法;
證書的發行機構(CA中心)的名稱,命名規則一般采用X.500格式;
證書的有效期,現在通用的證書一般采用UTC時間格式,它的計時范圍為1950年-2049年;
證書擁有者的名稱,命名規則一般采用X.500格式;
證書擁有者的公開密鑰;
證書發行機構(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:[email protected]
第二步:輸入相關的證書信息 。
粘貼證書簽名申請(Certificate Signing Request (CSR))文件內容,例如mbkey.csr
的內容如 下:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBqjCCARMCAQAwajELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAlpKMREwDwYDVQQHEwhIYW5nWmhv
dTETMBEGA1 UEChMKYmxv2ZNuLmNvbTETMBEGA1UECxMKRGVwIG9mIHRlYzERMA8GA1UEAxMIamFt
ZXNsZWUwgZ8BBQADgY0AMIG JAoGBAMdWU29wDQYJKoZIhvcNAQEGs8c5uaa6N4x3Q4Qp697VL17A
jKQon3447DIrDBN8xDNYBxZPKeQuGZswhuLn OGY4+Dc4r6MvcfyltjW2sjutjaBvsu+3ubzkVva0
3U9I9RKrY9UjxH1EjDq/UF7iVdI1OgZ/7ORd2YiMZEUN9TBpu zGiKS+ZupMrbbNdAgMBAAGgADAN
BgkqhkiG9w0BAQUFAAOBgQCvCxgKCWzGnWzzBPTi8D3dqNAD7ec4tsZZD+40Jo BaXzQL1LtKAcTN
pi/NPK9QFXDGnV/QFs/BNK5yjCH6NCdWZ4GelIL6V/i8zMiSB1r7kZRKXVvNtMAyNnMqW1R9481 z
x0zMlqnXqiwXnfmMFIBP4TrrZ7cgzLo8vpEjxhSgzQ==
-----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/UF7iVd I1OgZ/7ORd2YiMZEUN9TBpuzGiKS+ZupMrbbNdAgMBAAGgADAN
BgkqhkiG9w0BAQUFAAOBgQCvCxgKCWzGnWzzBPT i8D3dqNAD7ec4tsZZD+40JoBaXzQL1LtKAcTN
pi/NPK9QFXDGnV/QFs/BNK5yjCH6NCdWZ4GelIL6V/i8zMiSB1r7 kZRKXVvNtMAyNnMqW1R9481z
x0zMlqnXqiwXnfmMFIBP4TrrZ7cgzLo8vpEjxhSgzQ==
-----END NEW CERTIFICATE REQUEST-----
第三步:檢查證書信息並輸入這個證書的使用密碼。