首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J2ME 應用程式簽名憑證完整指南:Thawte 與 VeriSign 申請流程詳解

     編輯:Java 相關知識

為什麼需要 MIDlet 簽名?

未簽名的 MIDlet 存取網路、SMS、PIM、檔案系統等敏感 API 時,手機會彈出「允許/拒絕」提示,嚴重影響使用者體驗。經 CA 簽名後,裝置可驗證發布者身份,授予「可信任第三方」或「製造商」權限,實現靜默存取。

數位憑證基礎知識

  • X.509 v3 標準:包含版本、序號、簽名演算法、發行者 (CA)、有效期、主體 (申請者)、主體公鑰、擴展欄位 (KeyUsage, ExtendedKeyUsage, CRL 等)。
  • 金鑰對:私鑰簽名/解密,公鑰驗證/加密。RSA 是常用演算法。
  • 信任鏈:裝置內建根 CA 憑證 → 驗證中繼 CA → 驗證你的程式碼簽名憑證。

兩大主流 CA 比較

CA價格(年)通用性備註
VeriSign (現 Symantec/DigiCert)~$400最高,幾乎所有 Java 手機支援企業級首選
Thawte較便宜略低,部分 Nokia S40/S60 機型不支援成本敏感專案可考慮

國內代理商:Thawte / VeriSign

VeriSign 簽名憑證申請 7 步驟

  1. 技術聯絡人資訊:姓名、職稱、公司、地址、電話、Email。
  2. 提交 CSR (Certificate Signing Request):使用 keytool 或 OpenSSL 產生金鑰對與 CSR (PKCS#10 格式),貼上 -----BEGIN NEW CERTIFICATE REQUEST----- ... 內容。
  3. 設定憑證使用密碼:保護私鑰匯出檔 (PFX/P12)。
  4. 公司資訊驗證:營業執照、電話帳單等證明文件。
  5. 付款:信用卡/匯款。
  6. 確認並提交訂單。
  7. 等待簽發 (5-15 工作天):收到憑證後匯入金鑰庫。

CSR 產生範例 (keytool)

# 1. 產生金鑰對
keytool -genkeypair -alias mymidlet -keyalg RSA -keysize 2048 \
  -keystore mykeystore.jks -storepass changeit -keypass changeit \
  -dname "CN=My Company, OU=Dev, O=My Company, L=City, ST=Province, C=CN"

# 2. 產生 CSR
keytool -certreq -alias mymidlet -keystore mykeystore.jks \
  -storepass changeit -file mymidlet.csr

# 3. 送審後,收到回覆憑證 (reply.cer) 匯入
keytool -importcert -alias mymidlet -file reply.cer -keystore mykeystore.jks -storepass changeit

MIDlet 簽名與驗證流程

  1. 開發者以私鑰對 JAR 檔雜湊 (SHA-1) 簽名,產生 RSA-SHA1(JAR)。
  2. 將簽名值編碼後寫入 JAD 屬性:
    MIDlet-Jar-RSA-SHA1: <Base64簽名>
    MIDlet-Certificate-1-1: <Base64憑證鏈>
  3. 使用者下載安裝時,手機:
    a. 計算 JAR 雜湊
    b. 從 JAD 取出簽名與憑證鏈
    c. 驗證憑證鏈信任至根 CA
    d. 用公鑰驗證簽名
    e. 比對雜湊相符 → 允許安裝並授權權限。

常見問題與避坑

  • 憑證鏈不全:匯入時必須包含中繼 CA,否則裝置無法建立信任鏈。
  • 私鑰保護:PFX/P12 匯出時設定強密碼,嚴禁提交版控。
  • 測試用自簽憑證:僅限開發機安裝根憑證後測試,量產必須用公信 CA。
  • 權限對應:JAD 需聲明 MIDlet-Permissions / MIDlet-Permissions-Opt,與簽名權限等級一致。

現代替代方案

隨著 Java ME 退場,新專案建議轉向 Android/iOS 原生或跨平台框架 (Flutter/React Native),避免維護舊式簽名流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved