免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1148 | 回复: 0
打印 上一主题 下一主题

MIDlet签名及安装全攻略 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-28 17:54 |只看该作者 |倒序浏览

               MIDlet签名及安装全攻略

作者:陈红波
日期:2007年4月28日
联系方式:
hempel.chen@hotmail.com
版权声明:你可以任意拷贝,转载此文章,但必须保留作者信息以及此声明。

为了更好的了解签名的MIDlet的部署流程,本文对签名的MIDlet的产生,发布,安装整个流程做了分析。

本文的基本思路是:
1.采用openSSL自己做CA;
2.使用SUN WTK来对已有的MIDlet进行签名;
3.使用SUN WTK的OTA运行方式来安装,从中看到签名的验证

本文包含的步骤包括:
1.基于openSSL创建自己的CA,并生成顶级和二级CA证书;
2.使用WTK工具来新建密匙对,并提交CSR(Certification Request Standard);
3.采用二级CA证书对第1步中提交的CSR进行签名,生成经CA签名的证书;
4.将签名后的证书导入WTK;
5.将顶级CA证书安装到WTK;
6.在WTK中使用经CA签名的证书来对MIDlet进行签名;
7.通过OAT安装MIDlet,证书验证通过,能正常安装

准备工具:
1.openSSL(
http://www.openssl.org/

2. SUN WTK (
http://gceclub.sun.com.cn/products/sjwtoolkit/zh_download-2_2.html
)

具体步骤:
1.1 基于openSSL生成顶级和二级CA证书
(1)    安装 openSSL
下载 openSSL源码后,解压缩,依据 $openssl-0.9.8d/ INSTALL.W32中的说明(我是在Windows+cygwin上安装的,别的平台请参考相应的INSTALL.XXX文件),执行
./config
make
make test
make install
安装完后,使用cygwin(任何命令行终端)执行 openssl,确认该命令可执行(主要是保证$ openssl-0.9.8d\apps在 $PATH 变量中)
(2)    准备创建CA
   cd $yourpath
   mkdir CA req
   cd CA
   mkdir newcerts private
   echo '01' > serial
   touch index.txt
   touch openssl.conf
(3)    编辑配置文件 openssl.conf
    请参考
openssl.txt
,将文件内容保存为 openssl.conf 即可
(4)    生成CA公私钥cakey.pem(顶级CA证书的密匙对)
   (以下命令在$yourpath下执行。以后如无特别说明,所有命令均在$yourpath下执行)
   openssl req -new -x509 -extensions v3_ca -keyout ./CA/private/cakey.pem -out ./CA/cacert.pem -days 7300 -config ./CA/openssl.conf
    这是系统会提示你输入各种属性值,比如:Common Name (CN),Country Name (C),State Or Province Name(S),Locality Name(L)等,你依此填写即可。不过,按照目前的 ./CA/openssl.conf的配置,你必须牢记countryName, stateOrProvinceName, organizationName这几个属性值,以后所有的证书申请的这几个域的值必须保持与该CA顶级证书的一致,否则无法使用CA证书给他们签名。当然,你也可以修改 ./CA/openssl.conf中的[policy_match],来确认哪些域要与CA顶级证书保持一致
    这里其实就已经生成了顶级CA证书的密匙对cakey.pem和证书cacert.pem。只不过,这里的证书是PEM格式,可以使用命令
openssl x509 -in ./CA/cacert.pem -inform PEM -out ./CA/cacert.der -outform DER
来PEM格式证书转换成X509标准格式的证书(DER格式)
(5)    生成二级CA证书请求
    openssl req -new -extensions v3_req_ca -keyout ./Class_2/Class_2_key.pem -out ./Class_2/Class_2_req.pem -days 7300 -config ./CA/openssl.conf
(6)    使用顶级CA证书对二级CA证书申请进行签名
openssl ca -policy policy_anything -extensions v3_req_ca  -out ./Class_2/Class_2_cert.pem -config ./CA/openssl.conf -infiles ./Class_2/Class_2_req.pem
将证书Class_2_cert.pem转换成x509标准格式证书
生成PEM格式的X509标准格式证书
openssl x509 -in ./Class_2/Class_2_cert.pem -inform PEM -out ./Class_2/Class_2_cert.cer -outform PEM
生成DER格式的X509标准格式证书
openssl x509 -in ./Class_2/Class_2_cert.pem -inform PEM -out ./Class_2/Class_2_cert.der -outform DER
这时,在Windows下双击cacert.der,可以看到该证书信息,但是系统提示该CA证无法信任。双击Class_2_cert.der,系统也提示该证书无法信任。但是当你安装了cacert.der之后,Class_2_cert.der也就可以被信任了,并且能够看出Class_2_cert.der是cacert.der签发的证书。

1.2 使用WTK提交CSR
(1)    下载SUN WTK并安装之后,启动KToolbar;
(2)    打开项目UIDemo,并打开菜单“项目->签署”;
(3)    在弹出的对话框中点击“新建密匙对”。注意,按照./CA/openssl.conf配置中的要求, 新建密匙对中的countryName, stateOrProvinceName, organizationName值必须与CA顶级证书保持一致;然后点击“创建”
(4)    点击”生成CSR”,生成 mykey.csr;

1.3 对CSR进行签名
(1)    将生成的mykey.csr文件放到 $ yourpath /req 目录下,
(2)    执行
openssl ca -policy policy_anything -keyfile ./Class_2/Class_2_key.pem -cert ./Class_2/Class_2_cert.pem  -config ./CA/openssl.conf -out ./req/mykey_cert.pem -infiles ./req/mykey.csr
将证书mykey_cert.pem转换成X509标准格式
openssl x509 -in ./req/mykey_cert.pem -inform PEM -out ./req/mykey_cert.der -outform DER
这是双击./req/mykey_cert.der 就会看到一个三级的证书链

1.4 将新证书导入WTK
    这里有一点问题要注意,WTK的证书管理底层使用的是 keytool.exe,导入证书时,要求导入PKCS#7格式的证书。这种证书将证书链的上的相关证书都打包放在一个文件中,在MIDlet的jad中的MIDlet-Certificate-1-1, MIDlet-Certificate-1-2, MIDlet-Certificate-1-3之类的,就是证书链的各个证书。
有个细节问题,一般的MIDlet的jad中包含的证书链不要包括证书链上的顶级证书,因为有些JVM在验证证书链时,要计算证书链上的证书数,而一般的证书链上的顶级证书是要求安装在手机上的,不是在jad文件中的。因此,将新证书所在的证书链导入WTK时,不能包括顶级证书。
如何获得一个证书所在的证书链上的所有证书呢?呵呵,windows系统内置了这一工具(MS的证书管理工具还是挺方便的)。
(1)    首先通过IE的 Tools->Internet Options->Content->Certificates,从中删除你刚才点击安装的顶级CA证书(否则待会到处证书链的时候,就会包含顶级证书)
(2)    你可以双击./req/mykey_cert.der;
(3)    在弹出窗口中点击“details”属性页;
(4)    点击“Copy to File…”;
(5)    选择 PKCS#7格式,并选择将证书链中的所有证书到处;
(6)    存为 mykey_cert.p7b,这样,mykey_cert.p7b就是一个包含证书链上所有证书(除顶级证书外)的一个证书package.
(7)    在WTK中,点击“项目->签署”,选中刚才生成CSR的那个密匙对(mykey),然后点击“导入证书”,选择mykey_cert.p7b导入即可。如果没有什么地方操作失误,这时 mykey 应该能够显示处该证书链的深度,以及证书链上各证书的一些基本信息。
(8)    点击“签署MIDlet套件”,会提示签署成功。

1.5 安装MIDlet
(1)    在WTK中,点击“通过OTA运行(Run via OTA)”,一步一步的安装,系统最后会提示你UIDemo.jad中包含的证书无法通过验证。这是意料之中的;
(2)    在WTK中,点击“文件(File)->工具机(Utilities)->证书管理”,将CA顶级证书导入;
(3)    再次通过OTA安装UIDemo,应该能成功。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25864/showart_288283.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP