`
happmaoo
  • 浏览: 4470238 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Signing a midlet suite的讨论稿[J2ME]

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

[J2ME] Signing a midlet suite的讨论稿

发起者:郑昀(zhengyun_ustc)

[问题]如何对一个MIDlet jar签名呢?

很多人都想知道怎么让自己的MIDlet访问网络啦、发送短信啦都能够不弹出烦人的警告框。

单纯回答说“你必须去Versign购买一个证书,或者找厂商签名”之类的话,也是让人不知道该如何具体操作的,还是懵懵懂懂的。

所以,下面我们试图聚合各位,一起参透这个话题:

如何签名?

找谁签名?

到底如何操作?

能不能自己给自己签名?

[尝试一] David HayesMIDlet jar signing tutorial可行吗?

David Hayes在他的Blog中提到了一个办法,毫无疑问,他是试验成功了的。

他给出了一个《MIDlet jar signing (a tutorial)

http://www.spindriftpages.net/pebble/dave/2005/06/20/1119275880301.html 》,文后的评论中,他还补充说了“经过这样的签名后,你必须通过OTA方式或者其他方式,让手机安装签名后的JAD,而不是仅仅通过上传JAR来安装。只有通过JAD安装方式,这种签名才会奏效”

幸的是,我试验不出来。签名之后,JAD中倒是多了这么一段:

MIDlet-Certificate-1-1

MIDlet-Certificate-1-1: MIICTjCCAbcCBEQ06RcwDQYJKoZIhvcNAQEE。。。blabla

而且我的jar包中的MIMESMSSender.jar\META-INF文件夹下,也多了ZHENGYUN.RSAZHENGYUN.SF两个文件;MANIFEST.MF文件中也多了很多这样的东西:

MIDlet-Certificate-1-1

Name: res/icons/logo.png

SHA1-Digest: 7waVS61BFIfNrpz8/CeyuskUGuU=

Name: res/icons/exit.png

SHA1-Digest: L+8Kb/TeuRUpWsq5qrU9epu5Srw=

但是都没用。

有的网友说这个方法在手机上安装,遇到了“Authorisation Failed”错误提示,而David

Authorisation Failed

I've seen Authorisation Failed a few times now. Typically rebooting the phone (and taking the battery out0 fixes it for me. I'ver heard that linebreaks in the permissions attribute in the Manifest can cause problems but it seems ok to me on 6680/6630/6230i(could be firmware dependent?). Maybe you should try a shorter permission string?

Other things I have heard cause problems MIDlet-Permissions contains permissions that the phone doesn't support?

[参考一] motocoder的官方回复

请阅读

https://motocoder.custhelp.com/cgi-bin/motocoder.cfg/php/enduser/std_adp.php?p_faqid=442&p_created=1092167721 上的这段话,看来,如果想使用摩托罗拉的受限制API的话,那么就不能自己签名,只能和他们谈生意了。

论坛贴子之摘录

Signing a midlet suite

Question

We have purchased a code signing certificate from verisign to sign our midlet.

However it does not appear to work.

The certificate we received back from verisign is a chain of certificates. Can you look at the certificate and tell me if it should work i.e. is the root CA for the cert on the phone. If I need to add additional 'Midlet-Certificate' entries in the jad can you please advise on what they should be.

Answer

The issue is that you can not purchase a certificate through Verisign or any other Authority and sign the midlet yourself - it will not work.

You need to go through Motorola in order to get this done, but it will only be done if there is a business relationship with Motorola and your company.

也就是说,摩托罗拉的策略是,他的手机不允许你自己签名!而必须通过摩托罗拉自己来做。

[参考二] 如何和摩托罗拉办理签名手续

请阅读

https://motocoder.custhelp.com/cgi-bin/motocoder.cfg/php/enduser/std_adp.php?p_faqid=708&p_created=1119609364&p_sid=r7EU8p4i&p_lva=442 上的这段话。

论坛贴子之摘录

我总结一下步骤:

1. 如果你没有NDA,那么请到MOTOcoder.com的首页,上面有一个“Innovate”的链接,在这里提交申请。

2. 确定你的公司和摩托罗拉之间有一个有效的NDA (Non Disclosure Agreement)!而且必须是和Motorola Mobile Devices Business or PCS (Personal Communications Sector)的协议!

3. 告诉摩托罗拉你的应用(MIDlet)需要在哪些设备上运行!

4. 告诉摩托罗拉为什么要提出Signing Request?你的应用都要使用到哪些受限制的API

5. 通知Motorola Business Sponsor。通过motocoder站点的Ask A Question这个链接来提交。

[参考3] 用证书权威机构的证书签署Midlet
作者 dingjf7516
http://www.j2medev.com/bbs/dispbbs.asp?BoardID=2&ID=7622&replyID=38045&skin=1

一:证书权威机构以及证书的选择策略

1:确定目标手机是否实现了第三方信任域,是否支持证书权威机构的证书。

多数Moto的手机不支持证书权威机构的证书,不支持Java Verified的认证。我个人只能确定大部分诺基

亚和索爱的手机是支持的。

2:确定目标手机安装了该证书权威机构的根证书。

因为验证的过程需要从JAD属性包含的证书路径追溯到安装在手机上根证书,所以在选择证书权威机构之

前,必须确认目标手机上安装了该机构的根证书。一般认为最通用的是Verisign,其次是Thawte。

3:向选定的证书权威机构申请正确的证书。

这些机构一般提供多种的安全证书,必须选择正确的证书。对于Midlet,应该选择java code signing证

书。

4:关于价格。

据我个人了解,Verisign的一年有效期的证书是400$,Thawte是199$,我们最后选择的是Thawte的。

二:相关keytool 命令简介

1:生成公用/私用密钥

keytool -genkey

2:生成CSR(certificate signing Request)

keytool -certreq

3:导入证书

keytool -import

三:wtk签署的步骤说明

1:打开工程执行build和package

2:菜单project-》Sign-》import keypair,选择用keytool导入了证书的keystore

3:sign midlet suite

四:向证书权威机构申请购买证书的流程。

1:用keytool生成CSR

2:登录Thawte的网站。

3:注册购买java code signing证书,按照提示流程填写相关信息,其中包含CSR。

4:提供公司注册证明和公司电话号码的证明,等待对方验证。

5:完成相关证明的验证后,Thawte会把证书放在网页上,下载得到签署者证书。

[参考4] 用自制证书签署Midlet
作者 dingjf7516

抱歉,前面关于购买证书的流程,忘记了最重要的一步,付款。不给钱是不行的哟。:)

一:自制证书签署是否可行?

1:无论David Hayes还是诺基亚论坛的网友random john doe,都需要把自制的根证书安装到手机上。所

以用自制证书签署Midlet的前提是手机支持某种方法可以让用户安装证书到第三方信任域。而具有这种功

能的手机并不多。

2:JSR118-MIDP2.0规范规定,“Third party Protection Domain Root Certificates downloaded

after device manufacture MUST NOT be used for
authentication of MIDlet suites.”也就是后安装的证书是不可以用来验证Midlet的证书和数字签名的

所以,如果在S60上可以用自制证书将安装到第三方信任域的话,说明该手机的安全机制的实现是不符合

规范的,可能带来安全问题。

3:我个人没有验证过自制证书签署Midlet,所以只是对David Hayes和John Doe如何做给出一个介绍。

二:David Hayes的方法

1:keytool生成公用/私用密钥。

2:keytool -export导出自制根证书。

3:安装根证书到手机。

4:build并packageMidlet

5:jarsigner修改jar。

6:jadtool加入证书。

7:jadtool加入数字签名。

三:John Doe的方法

1:keytool生成公用/私用密钥。

2:keytool -selfcert生成自制的根证书。

3:keytool -export 导出根证书。

4:安装根证书到手机。

5:build并packageMidlet

6:用WTK签署Midlet,加入证书和数字签名。

比较两个人的做法,David Hayes没有keytool -selfcert自制证书的步骤,而多了jarsigner把签名写入

jar的步骤。相比较之下,John Doe的做法可能更正确一些。

在John Doe的帖子中,schnejan表示6600的版本必须是4.09.1或以后,daniele.pinto表示Midlet不能用

到precompile library。

不过手机的中文版和英文版也可能是不同的,需要大家自己去验证。:)




分享到:
评论

相关推荐

    Midlet Signing

    ### Midlet程序签名机制详解 #### 一、引言 Midlet(Mobile Information Device Profile Application)是基于Java ME平台的应用程序。为了确保Midlet的安全性和可靠性,Java ME平台引入了程序签名机制。本文将详细...

    J2ME无线设备编程

    J2ME应用运行在受限制的安全沙箱内,需要通过MIDlet Suite Signing对应用签名,以获取额外的设备访问权限,如读取联系人或发送短信。 ### 9. 分发与安装 J2ME应用通常通过运营商的WAP门户、应用商店或者直接通过...

    J2ME开发大全.pdf

    5. **MIDlet**: MIDlet是J2ME的应用程序,与传统的Java应用程序不同,MIDlet在J2ME环境中运行,遵循MIDP规范。 书中可能详细介绍了以下知识点: - **MIDP API**: 包括用户界面组件(如Canvas和Form)、输入管理、...

    SSMSe.rar_j2me sms

    5. **Code Signing**:为了能在手机上运行并获得必要的权限,J2ME应用通常需要签名。这涉及到生成证书和对应用进行签名的过程,以证明其来源可信。 6. **Event-driven Programming**:J2ME使用事件驱动编程模型,当...

    J2ME签名备忘

    **J2ME签名备忘** 在移动开发领域,尤其是针对Java ME(J2ME)平台的应用程序,签名是一个至关重要的步骤。这是因为J2ME应用程序在设备上运行时,需要通过安全验证来确保其来源可靠,避免恶意代码的入侵。本文将...

    JAVA实现CLDC与MIDP底层编程的代码.zip

    MIDP还包含了J2ME Wireless Toolkit(现在称为Java ME SDK),这是一个开发工具,用于模拟和测试MIDlet(MIDP应用程序)的行为。 在学习和使用这些代码时,你可能会接触到以下几个关键概念: 1. **MIDlet Suite**...

    Python库 | signing-2.tar.gz

    本文将深入探讨“signing-2.tar.gz”这个Python库资源,它显然是一个压缩文件,包含了名为“signing-2”的库的源代码或者其他相关组件。 首先,让我们了解“signing”这个词在编程中的含义。在软件开发中,"signing...

    Generate Certificate Signing Reuqest SHA 256 2048 bit

    Generate Certificate Signing Reuqest SHA 256 2048 bit,then using this csr ,generate a Enterprise CA Cert

    CertificateSigningRequest.certSigningRequest

    为了appstore上架安排的技术网站,希望您能喜欢,做最好的我们!

    Signing Configurations配置文件

    Signing Configurations配置文件

    windriver Signing Module Architectural Design

    This document explains the workings of the Signing Module (SM) component of the Signing Module Architectural Design product

    jwt-api.zip

    修改源码后的jar包 解决:The signing key's size is 1024 bits which is not secure enough for the RS256 algorithm.

    nginx_signing.key

    nginx_signing.key

    gpg-key-signing

    Signing SubKey此子项将用于对我们的提交进行签名。 加密SubKey在此上下文中并未真正使用,但这是默认创建的,可能会派上用场。 我们将使主密钥的私密部分保持离线状态,以保护我们的身份免遭盗窃或丢失。 阅读...

    HDCP 1.x Signing Facility User's Guide.pdf

    《HDCP 1.x Signing Facility User's Guide》是针对数字内容保护(High-bandwidth Digital Content Protection,简称HDCP)1.x版本的签名设施用户指南,由WiFi联盟发布,旨在为制造商和开发者提供关于如何在支持HDCP...

    HTTPSignatures:一个Burp Suite扩展,实现了Signing HTTP Messages草稿-ietf-httpbis-message-signatures-01草稿

    HTTPSignatures是Burp Suite扩展,它实现了Signing HTTP Messages规范草稿文档。 这使Burp Suite用户可以无缝测试需要HTTP签名的应用程序。 特征 当扩展名检测到现有的HTTP签名标头时,会自动在Burp Repeater,...

    Unable to find manifest signing certificate in the certificate store

    在进行软件开发过程中,特别是涉及到应用程序发布或者组件打包时,可能会遇到一个错误提示:“无法在证书存储中找到清单签名证书(Unable to find manifest signing certificate in the certificate store)”。...

    JAVA手机开发环境搭建

    - 创建新的J2ME中间件项目(Create new J2ME Midlet Suite Project) - 创建新的中间件(Create new MIDlet) - Java应用描述符(JAD)编辑器(Java Application Descriptor (JAD) editor) - 自动增量预验证...

    Signing.vue

    Signing.vue

    Google TPU V3 Codesigning Architecture and Infrastructure

    "Google TPU V3 Codesigning Architecture and Infrastructure" Google TPU V3 是一种高度定制的硬件架构,旨在为机器学习和深度学习应用程序提供高性能计算能力。该架构通过 codesigning 方式与软件编程模型紧密...

Global site tag (gtag.js) - Google Analytics