售前咨询
技术支持
渠道合作

申请Java 代码签名证书

Java 代码签名证书(Sun Java Signing Digital ID) 是代码签名数字证书(Code Signing Digital IDs)的一种,数字签名 Sun J2SE/J2EE 的 Java Applet 文件,以及数字签名 J2ME MIDlet Suite 文件,支持业界最多型号和最多品牌的手机。

Java 代码签名证书可向用户证明开发者的代码和内容是安全可下载的,保护开发者的开发成果,维护开发者的声誉。代码签名证书验证代码的来源,并确认在线分发的内容的完整性。代码签名证书可用于PC端以及移动端的Java应用程序,并被Java运行时环境(JRE)认可。

如何申请Java 代码签名证书

要获得Java的 Code Signing证书,请按照以下步骤操作。

步骤1:下载签名工具

请下载Java 2软件开发工具包(SDK)。http://java.sun.com/javase/downloads/index.jsp中的Solaris SPARC / x86,Linux86和Microsoft Windows平台免费提供最新版本。

使用keytool,jar和jarsigner申请开发者的代码签名数字ID并签署开发者的代码。

步骤2:注册

创建一个密钥库

要生成公钥/私钥对,请输入以下命令,为密钥库指定名称以及别名。

注意:推荐的密钥位大小是2048位。将于2013年10月之后到期的所有证书必须具有2048位密钥大小

keytool -genkey -keyalg rsa -keystore <keystore_filename> -alias <alias_name> -keysize 2048

这将在密钥库中创建密钥存储容器和私钥。私钥将具有非常重要的独特别名。例如,如果使用的命令是:

keytool -genkey -keyalg rsa -keystore javakeystore1.jks -alias mykeystorealias -keysize 2048

Keystore:javakeystore1.jks私钥别名:mykeystorealias Keytool将提示输入密钥库,名称,组织,和地址。keytool生成的公钥/私钥对保存到开发者的密钥库,并用于签署Java Applet和应用程序。此密钥永远不会发送给证书颁发机构CA,需要签署代码。CA机构建议开发者制作公钥/私钥对的副本,并将其存储在保险箱或其他安全位置。

生成CSR

需要为注册过程生成证书签名请求(CSR)。以下命令请求Keytool为密钥库中的密钥对创建CSR:

keytool -certreq -file certreq.csr -keystore <keystore_filename> -alias <alias_name>

此CSR将包含创建密钥库时输入的所有信息。

此CSR与密钥库中的私有密钥相关联(例如-keystore javakeystore1.jks -alias mykeystorealias)

1、创建密钥库文件的副本。此时有一个密钥存储区的备份文件可以帮助解决将证书导入原始密钥库文件时可能发生的安装问题。

2、向CA机构申请代码签名ID的注册。

3、复制CSR的内容并将其直接粘贴到CA机构注册表单中。(建议使用记事本或Vi)。

步骤3:开始使用

导入数字ID

一旦CA机构验证了订单并提供了CSR,可以通过CA机构信任中心检索开发者的Code Signing证书。代码签名数字ID是回到CA机构根证书的“信任路径”或“链接”。这个“信任路径”允许开发者的代码在任何标准JRE上进行验证,而无需安装任何其他文件。

由于颁发的证书是从与之前创建的确切密钥库绑定的CSR创建的,因此不能用于任何其他密钥库。(例如,证书只能正确安装到-keystore javakeystore1.jks -alias mykeystorealias中)。

证书有两种格式:

a)X509

b)PKCS7格式(.p7b文件)。

—–BEGIN CERTIFICATE—–

[encoded data]

—–END CERTIFICATE—–

确保在BEGIN CERTIFICATE和END CERTIFICATE的任一侧有5个破折号,并且无意中添加了空白,额外的换行符或其他字符。

要将Java数字标识的代码签名证书导入密钥库,请输入以下代码,将文件的路径正确名称(例如“cert.p7b”)输入到开发者的代码签名数字ID。

keytool -import -trustcacerts -keystore <keystore_filename> -alias <alias_name> -file cert.p7b

例如:

keytool -import -trustcacerts -keystore javakeystore1.jks -alias mykeystorealias -file mycert.p7b

注意:证书不能安装到不同的密钥库中,也不能安装到不同的别名。

因此,由于上述步骤,列出密钥库将仅显示1个keyEntry。

例如:keytool -list -v -keystore javakeystore1.jks

KeyEntry:PrivateKeyEntry

注意:如果在安装过程中出现错误:在将Java代码签名证书导入到密钥库中时,“keytool error:java.lang.Exception:输入不是X.509证书”,

将Applet捆绑到JAR文件中

如果开发者正在签署MIDlet,使用JADTool命令行实用程序使用jar来将Applet或应用程序捆绑为一个JAR文件。此字符串创建一个JAR文件(C:\ TestApplet.jar)。JAR文件包含当前目录及其子目录下的所有文件。

jar cvf <filename> .jar <filename to bundle>

例如:

jar cvf testapplet.jar file1.java file2.java

签署Applet

注意:从JDK 1.7起,在运行java代码时添加额外的检查。为了实现这些,需要将以下属性添加到清单文件(MANIFEST.MF)

  • 权限
  • 代码库

1、使用jarsigner使用保存在密钥库中的私钥对JAR文件进行签名。

jarsigner -keystore <keystore_filename> <Applet的路径(即C:\ TestApplet.jar)> <alias_name>

要添加RFC 3161(Sha-256)时间戳,命令由-tsa指定,如下所述:

Jarsigner -tsa http://sha256timestamp.ws.Symantec.com/sha256/timestamp  -keystore <keystore_filename> <路径到Applet(即C:\ TestApplet.jar)> <alias_name>

在提示符下,输入开发者的密钥库的密码。

注意:对于传统SHA-1时间戳,请使用SHA-1

2、Jarsigner散列开发者的Applet或应用程序,并将哈希存储在步骤5中创建的JAR文件中,并附有代码签名数字ID的副本。

3、验证签名的JAR文件的输出。

jarsigner -verify -verbose -certs d:\ TestApplet.jar

如果签名已经包含时间戳,则验证命令的输出将在条目签名时包括一条语句。

示例:[已于7/12/15 1:28 PM签署]

时间戳管理局(TSA)的证书链也应遵循这一点。

当下载已签名的JAR文件时,Java运行时环境将向用户显示开发者的数字ID。如果文件在签名后以任何方式被篡改,用户将被通知并给予拒绝安装的选项。

代码签名证书是开发者不可缺少的数字安全证书,保护各大开发者的劳动成果。各大开发者可向证书颁发机构(CA)申请证书。数安时代GDCA)致力于网络信息安全,已通过WebTrust 的国际认证,是全球可信任的证书签发机构。GDCA专业技术团队将根据用户具体情况为其提供最优的产品选择建议,并针对不同的应用为各大开发者提供最佳的解决方案。

上一篇:

下一篇:

相关新闻