题
一个简单的问题有一个相当复杂的答案:
你怎么签署一Java习本教所以你可以装载到一个移动电话用不安全的提示?
解决方案
得到所需的软件
- Java SDK(JAVA) 从 太阳 (你应该已经有这样的)
- Java无线工具包(WTK) 还从 太阳
- 任选的获取和安装 蚂蚁 和 天线 让你为自动化生成(我强烈推荐这些)
进口的现有证书(如果有)
- 如果你购买的证书从Verisign(或另一种提供者)的需要进口证书到你J2SE密钥库。
- 尝试使用以下命令
keytool -import -alias {myalias} -file {mycertificate}
(我没有能够测试这个,因为我没有适当的证书) - 运行
keytool -list
看到你的新书 - 接下来,你必须出口证书,所以你可以进到你的电话
- 运行
keytool -export -alias {myalias} -file mycertificate.crt
- 进口证书到你的电话(详情见下文)
建立和进一个新的(试验)证书
- 你需要用到的 密钥工具 (从JAVA)
- 我用的是以下命令
keytool -genkey -alias {myalias} -keyalg RSA -validity 365
- 这将提示你钥库的密码输入您的密码密钥库(如果你有一个现有的密钥库)或一个你要用的如果你没有一个呢
- 填写在所有的提示有关位置/公司名称等。
- 运行
keytool -list
看到你的新书 - 接下来,你必须出口证书,所以你可以进到你的电话
- 运行
keytool -export -alias {myalias} -file mycertificate.crt
- 进口证书到你的电话(详情见下文)
C:\j2sdk1.4.2_08\bin>keytool -genkey -alias company -keyalg RSA -validity 365
Enter keystore password: password
What is your first and last name? [Unknown]: My Name
What is the name of your organizational unit? [Unknown]: company
What is the name of your organization? [Unknown]: company
What is the name of your City or Locality? [Unknown]: location
What is the name of your State or Province? [Unknown]: location2
What is the two-letter country code for this unit? [Unknown]: GB
Is CN=My Name, OU=company, O=company, L=location, ST=location2, C=GB correct? [no]: yes
Enter key password for (RETURN if same as keystore password):
建立和包装应用程序
- 使用
javac
建立你的习本教特别注意到类路径和bootclasspath备选办法(否则preverification将失败).我也设定的目标1.1和源1.3 - 你JAD文件的重要属性,在JAD是 习本教-罐子-URL习本教-罐子-大小,习本教权限我们也包括习本教-标,艮配置,艮调,习本教名、习本教-推-1,习本教-标,习本教描述和习本教版本
- 产生的清单。MF文件的基础上你的JAD,必须删除习本教-罐子-大小和
MIDlet-Jar-URL
- 这些任务可以完成的使用wtkJad天线的任务
- 包和preverify的应用程序使用wtkPackage天线的任务,必须设置的类路径和bootclasspath性质正确无Preverification会失败
标志应用程序
- 标志应用程序的使用
jarsigner
- 运行
jarsigner -keystore {mykeystore} -storepass (mypassword} {myjar} {myalias}
- 现在你有一个签名的罐子你需要更新
MIDlet-Jar-Size
在你JAD
- 现在就加入证书的使用JAD
JadTool.jar
从WTK
- 运行
java -jar JadTool.jar -addcert -alias {myalias} -storepass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
- 现在添加该签名来JAD再次使用
JadTool.jar
- 运行
java -jar JadTool.jar -addjarsig -alias {myalias} -jarfile {myjar} -storepass {mypassword} -keypass {mypassword} -keystore {mykeystore} -inputjad {myinputjad} -outputjad {myoutputjad}
部署
- 部署这一网络服务器与MIME类型的设置是否正确和它下载到你的手机,这将是一个受信任的第3次缔约方应用程序
- 你也可以应用部署到电话发送罐子&JAD到的手机通过蓝牙或红外线或有线取决于你的电话功能。在诺基亚手机的文件
出现在你的短信的电子邮件收件箱
安装证书上的话
- 进口证书到你的电话,在Windows XP sp-2,我可以做的
通过右击文件和选择"发送到蓝牙设备",
你应该能够发送文件的通过电缆或红外线(IR)。NB:我
还没有找到反正进口证书上的一系列40电话
- 一旦安装证书需要批准
"应用程序安装"。我的手机上(Nokia6680),这是下
工具-->置证书管理-->信任设置,我打开
一切,但我认为"应用程序安装"是所有你需要的
共同的问题
- 应用程序没有安装使用JAD:该应用程序是只信任,如果它安装使用JAD,应用程序仍将安装在罐子的但这不可信。
- 应用信托设置不设置:一旦安装应用程序需要指定多少信托给它的(它没有得到所有权限通过默认)。上一个诺基亚60系列的电话这些都是发现在应用程序。经理。
- 根证书的缺失,电话:Java证书和/或Verisign证书缺少一些检查下电话工具-->置证书管理相关的证书
- 授权失败:-有一大堆的可能的原因,后面这个是那个我遇到的
- 证书缺少的手机,仔细检查你的证书已安装并已被标记为受信任的应用程序安装在管理证书
- 重新启动:卸载应用程序完全然后重新启动您手机的尝试把电池和SIM卡的出过,经常的事情让自己的扭曲,尤其是如果你已经被重新安装了很多没有卸载第一
- JAD/罐子不匹配:仔细检查的应用程序的大小在JAD,记住它字节数,重要的是不小磁盘上
- 浏览器高速缓存:如果你正在安装在空气让你清除你的浏览器高速缓存在安装之前
- 我听说过,但是未验证这条线断裂
MIDlet-Permissions
可能会引起问题,但它似乎确定我在诺基亚6680/6630/6230i(可能是固的依赖?)
- 的
MIDlet-Permissions
属性引起的很多问题(尤其是因为该文件往往是错误的/丢失或根据不同的话),试图走出的第一和加权限在一个在一段时间。一些机会抱怨的权限,他们不支持,一些会忽略它们
- 有一个错误,在某些早期的诺基亚6600固件,停止将安装的信任MIDlets
- 证书无效:如果你产生的证明自己可能已开始有效日期是明天,也如果你的电脑和电话的日期是不同的,你可以外期间的证书的有效性
- 没有证书的管理的系列40电话,你可以安装经过签名的申请,但行为奇怪的是,与自签证书
- JadTool问题:我没有经历过任何这些问题,但许多其他人有
- "我有问题,如果我尝试使用jadtool。我有一个证书链和不能似乎得到第二证书添加到JAD文件使用的任何WTK jadtool.有趣的部分但是我可以成功登录的习本教使用任何同WTK GUI接口-他们加入第二证明是正确的。我的步骤:
- 使用1.4.2_06jarsigner.exe 签署罐子
- 使用WTK(2.2或2.3测试)jadtool到addcert与certnum1
- 如果我呼叫jadtool到addcert与certnum2的同一证书是插入作为cert1-2我假设我在做的事情是错误地输入由于WTK gui似乎是工作就好了"
- "我收到一个职位上的脑的新闻小组的主题,即国家有一个错误的jadtool和提交人声称已提交的报告和公布一个补丁: http://archives.java.sun.com/cgi-bin/wa?A2=ind0508&L=kvm-interest&F=&S=&P=9858 一个有趣的注意,也张贴是cert JAD params是静态的,所以一旦你让他们从WTK正确,你可以把它们是静态的蚂蚁脚本。"
- "我想签署一习本教诺基亚6620设备。我使用一个Verisign代码签字证书,实际上包含了两个证书(用户和中间CA)。我使用的WTK2.2签署的工具。你知道如果这一工具支持两个证书时签署?签署加入到JAD文件有两个证书,但是我已经得到安全的错误时安装。我已经检查了设备上的和有不同的根证书的安装Verisign但它仍然失败!
- "如果你想,你可以下载的sprintpcs开发工具包,因为它支持双证书(http://developer.sprintpcs.com).然而,我从来没有得到认证工作在诺基亚(6620/cingular)电话,虽然它不工作上的冲刺电话(与开发商根启用)。最后,我仅有的东西的工作通过创建证书中描述的这个博客和安装电话。奇怪的是,虽然根cert我versign签名证书,**在6620电话,它仍然将永远不会安装我的习本教你会觉得这是应该的。"
- 旧电话(6230/i,6682)不支持x509证书,WPKI已被建议作为一个可能的解决方案,但是我还没调查过这个
- 插座连接,可能会有问题(http://discussion.forum.nokia.com/forum/showthread.php?t=68306 )可能由于WAP基础设施和提供服务的操作者。HTTP是一个更安全的协议的使用
- "上网和检查程序的有效性":是/否。如果我点击"是"按钮的话,我得到的以下错误:"证书撤销为该应用程序"和安装将失败。为了纠正这一工具->管理中心-菜单->置在线检查证书[On/Off/需要]也是一个默认的地址设置。如果在线控制的设置是需要时,检查将失败,如果没有默认的地址。看看 http://discussion.forum.nokia.com/forum/showthread.php?t=71071
信托域
- 有4种不同的信托域MIDP2(制造、操作者、受信任的第三方并不可信的).受信任的第三方是唯一一个任何对我们真的。它给出了以下选择对我的诺基亚6680(英国沃达丰公司):
网络访问:不允许的,每次询问,要求第一时间
消息:不允许的,每次询问程序
自动启动:不允许的,每次询问,要求第一时间
连通性:不允许的,每次询问,要求第一时间,总是允许的
多媒体:不允许的,每次询问,要求第一时间
读取用户的数据:不允许的,每次询问,要求第一时间,总是允许的
编辑用户的数据:不允许的,每次询问,要求第一时间,总是允许的
- 这些设置的定义是通过在操作者和电话制造商和因此而变化之间的电话、制造商和运营商。
尚未解决的问题
- 我管理,以签署JAD用这种格式使用J2ME WTK公用事业,但是,当试图安装在设备上我得到消息"的应用程序认证失败的909".
样品JAD
MIDlet-Jar-URL: MyApp.jar
MIDlet-Jar-Size: 201365
MIDlet-Name: MyApp
MIDlet-Vendor: EC1M
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.1
MIDlet-Icon: logo.png
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,*
MIDlet-Description: MyApp MIDlet
MIDlet-Permissions: javax.microedition.io.PushRegistry,javax.microedition.io.Connector.sms...
MIDlet-Version: 1.0.67 MIDlet-1: MyApp, logo.png,net.ec1m.MyApp.midp.MyAppMIDlet
MIDlet-Certificate-1-1: MIICODCCAaECBEKqpfswDQYJKoZIhvcNAQEEBQAwYz...=
MIDlet-Jar-RSA-SHA1: EUsAch/.../hEZOsJsiCjBOhNs/3FSw4=
样品的清单
Manifest-Version: 1.0
MIDlet-Name: MyApp
Created-By: 1.4.2_05-b04 (Sun Microsystems Inc.)
MIDlet-Push-1: sms://:6553,net.ec1m.MyApp.midp.MyAppMIDlet,*
MIDlet-1: MyApp, logo.png, net.ec1m.MyApp.midp.MyAppMIDlet
MicroEdition-Configuration: CLDC-1.1
Ant-Version: Apache Ant 1.6.2
MIDlet-Icon: logo.png
MIDlet-Vendor: EC1M
MIDlet-Permissions: javax.microedition...
MIDlet-Version: 1.0.67
MicroEdition-Profile: MIDP-2.0
MIDlet-Description: MyApp MIDlet
样品的蚂蚁建立的文件 我已经把我们的 EC1M 蚂蚁建立的文件 在我们的网站(希望)使这一点变得更容易。其他资源 此 常见问题上,诺基亚论坛 值得一读。
其他提示
步骤1: 创建其可以通过提高CSR请求
1) Creating keystore and using that generate CSR file.
2) Perform steps given by certificate authority and download CSR and private key files.
步骤2: 给你的信息,以验证证书颁发机构。
第三步: 代码签名你将被提供的证书。
步骤4: 您需要向下负载中间证书与根证书一起。
步骤5: 现在你将有your_domain_name.crt,IntCertCA.crt,TrustedRoot.crt
Now you need to create a chained certificate by combining all above certificates.
1) Open a text editor (such as wordpad) and paste the entire body of each certificate into one text file in the following order:
The Primary Certificate - your_domain_name.crt
The Intermediate Certificate - IntCertCA.crt
The Root Certificate - TrustedRoot.crt
Make sure to include the beginning and end tags on each certificate. The result should look like this:
-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate: your_domain_name.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate: IntCertCA.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate: TrustedRoot.crt)
-----END CERTIFICATE-----
Save the combined file as your_domain_name.pem. The .pem file is now ready to use.
步骤6: 导入私有密钥到您的your_domain_name.pem
openssl pkcs12 -export -in your_domain_name.pem -inkey your_private_key.key -out output_file_name.p12 -name your_alias
NOTE: PLEASE REMOVE \ FROM FOLLOWING COMMANDS AND EXECUTE ( \ IS BASICALLY COMMAND CONTINUETY )
步骤7: 创建从output_file_name.p12
的密钥库 keytool -importkeystore \
-deststorepass changeit -destkeypass changeit -destkeystore your_domain_keystore.ks \
-srckeystore output_file_name.p12 -srcstoretype PKCS12 -srcstorepass your_store_password \
-alias your_alias
步骤8: 注意:BEFORE触发研究以下命令YOUR JAD文件的请抽出BACKUP
Add your certificates to your your_midlet_name.jad file.
java -jar JadTool.jar -addcert -alias your_alias \
-storepass your_store_password \
-keystore your_domain_keystore.ks \
-inputjad your_midlet_name.jad -outputjad your_midlet_name.jad
第九步: 注意:BEFORE触发研究以下命令YOUR JAD文件的请抽出BACKUP
Sign your midlet, also use your_midlet_name.jad file generated from Step8.
java -jar JadTool.jar -addjarsig \
-alias your_store_password \
-storepass your_store_password \
-keypass your_store_password \
-keystore your_domain_keystore.ks \
-inputjad your_midlet_name.jad -outputjad your_midlet_name.jad
不隶属于 StackOverflow