在尝试为Java应用程序签名时,可能会遇到官方文档不够详尽的问题。本文将以简单的语言,从开始到结束,详细解释如何完成这一过程。
可能已经尝试过Sun Microsystems的官方教程,但发现它并不适用。值得注意的是,签名Java应用程序和签名J2ME应用程序的过程并不相同。在使用手机上的应用之前,需要对JAD文件进行一些额外的操作。
需要以下工具:
在Windows Vista中,可以通过开始菜单搜索cmd,右键点击cmd.exe并选择"以管理员身份运行"。
需要将工作目录切换到JDK的bin文件夹,keytool就位于其中。首先确定keytool的位置,可能在"C:\Program Files\Java\jdk1.6.0_18\bin",但根据安装位置和处理器架构可能会有所不同。
要切换文件夹,可以使用以下命令:
cd "C:\Program Files (x86)\Java\jdk1.6.0_18\bin"
必须创建一个包含公司交易信息的密钥库。这些信息将由证书颁发机构(如VeriSign或Thawte)用来验证公司。输入以下命令:
keytool -genkey -keyalg rsa -keystore -alias
将
将被要求输入一些关于公司的信息。尽可能准确地填写信息,每个字段后按Enter键。当所有字段都完成后,必须确认信息。完成后,输入"yes"然后按Enter键。输入别名的密码,然后重新输入它。确保记下这个密码,因为将经常使用它。这个密码可以和密钥库密码相同。
CSR基本上是刚刚输入的所有数据的加密版本,以数字签名的形式。必须将签名发送给证书颁发机构(CA)进行处理。要创建CSR:
keytool -certreq -file "C:\Users\Jon\Desktop\certreq.csr" -keystore -alias
将文件路径替换为桌面路径("C:\Users\Jon\Desktop\"),建议这样做以方便。将
现在已经创建了CSR,需要将其发送给CA。如果还没有开始与CA(如VeriSign或Thawte)的注册过程,应该现在开始。最终会在注册表单上看到一个字段,上面写着"输入CSR"。
要输入CSR,请使用简单的文本编辑器(如记事本)打开"cert.csr"文件,通过右键点击并选择"打开方式..."。
将CSR复制到网络表单中,然后继续注册过程。
一旦CA验证了身份,他们将回复一个Sun Java代码签名数字ID,这基本上看起来像是之前发送给他们的CSR的长版本。在可以使用数字ID之前,需要做一些工作。在桌面上创建一个名为"cert.p7b"的新文件,并将CA的回复复制粘贴进去。
确保包括"BEGIN CERTIFICATE"和"END CERTIFICATE"的起始和结束声明。这些是证书的一部分。还要注意,文本的两侧应该有5个破折号(-)。
要将证书导入到信任库,执行以下命令:
keytool -import -trustcacerts -keystore -alias -file "C:\Users\Jon\Desktop\cert.p7b"
再次替换<>字段,使用之前在本教程中指定的相同值。
Java Midlet由两个文件组成:一个JAR文件和一个JAD文件。JAD文件是一个描述文件,指定了JAR文件的信息。JAD文件是需要用证书签名的文件,而不是JAR文件(这就是为什么很多人出错的原因!)。
在执行此操作之前,需要将工作目录更改为文件"JADTool.jar"的位置。这个文件是Java Wireless Toolkit(WTK)的一部分,其位置可能会根据安装位置而有所不同。文件可能在这里:"C:\WTK2.5.2_01\bin"。要更改工作目录,执行以下命令:
cd "C:\WTK2.5.2_01\bin"
要将证书添加到JAD,执行此命令:
java -jar JadTool.jar -addcert -keystore -alias -storepass -inputjad -outputjad
这里有很多操作。需要仔细检查每个字段值:
最终,应该会得到类似这样的结果:
java -jar JadTool.jar -addcert -keystore "C:\Program Files (x86)\Java\jdk1.6.0_18\bin\truststore2.jks" -alias testapp -storepass password -inputjad "C:\Users\Jon\Desktop\MyApp.jad" -outputjad "C:\Users\Jon\Desktop\MyApp 0.jad"
现在已经将证书添加到JAD,必须将签名添加到JAD。命令与刚刚发出的命令类似:
java -jar jadtool.jar -addjarsig -jarfile -keystore -alias -storepass -keypass -inputjad -outputjad
主要的区别是将"-addcert"命令更改为"-addjarsign"命令。确保在指定
可以通过执行以下命令来验证JAD文件是否已正确签名:
java -jar jadtool.jar -showcert -all -inputjad
现在应用程序已经签名,删除"MyApp.jad"和"MyApp 0.jad"。现在将"MyApp 1.jad"重命名为"My App.jad"。
将JAD和JAR文件传输到手机或其他测试设备。查看应用程序的详细信息,显示应用程序已用公司信息签名。这因设备而异,但应该类似于"证书:是"。