天天看點

J2ME軟體簽名證書和擷取

内容簡述

背景

一個好的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檔案摘要加密後的資訊 “解密,并互相比較,相同則安裝繼續,否則就退出安裝。

  購買證書包括以下幾步:

第一步:輸入具體技術負責部門(人)的聯系方式(資訊)。

J2ME軟體簽名證書和擷取

*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-----

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-----

第三步:檢查證書資訊并輸入這個證書的使用密碼。

第四步:輸入公司的聯系方式(資訊)。

J2ME軟體簽名證書和擷取

第五步:輸入付款方式和相關資訊。

第六步:确認并送出定單

申請者确認相應的送出資訊。

第七步:列印确認書并檢視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-----

第三步:檢查證書資訊并輸入這個證書的使用密碼。

J2ME軟體簽名證書和擷取
J2ME軟體簽名證書和擷取
J2ME軟體簽名證書和擷取

繼續閱讀