|  主页
帮助

SSL 证书 帮助

Java 代码签名:生成 CSR

从 2014 年 1 月开始,在 Web 浏览器中运行的所有 Java 应用程序都必须要有代码签名证书。购买代码签名证书后,您必须对您的 Java 代码签名。

一些工具被要求对 Java 代码(包括 keytool、jar 和 jarsigner)打包和签名。从 JDK 5.0 开始,jarsigner 可以生成包含时间戳的签名,从而验证当代码签名证书仍有效时 JAR 文件是否经过了签名。

方法 1 – 申请新的代码签名证书

  1. 如有必要,通过以下链接下载 JDK:
    http://java.sun.com/javase/downloads/index.jsp
  2. 通过 GoDaddy 申请代码签名证书。
    • 创建新密钥库。秘钥库是用于存储安全证书的地方。这个示例会创建一个名为“codesignstore”的自定义密钥库,它仅用于代码签名证书和关联的私有秘钥。
      keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass
    • 创建证书签名申请 (CSR)。将会创建一个私有密钥并将其存储在名为“codesignstore”的密钥库中。将会在当前的工作目录中创建一个名为“mycsr.pem”的 CSR 文件。
      keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
    • 购买代码签名证书。
    • 在“我的账户”中,单击购买的代码签名证书。此时您会进入 GoDaddy 安全证书服务账户管理 Web 应用程序。必须在申请表上将 CSR 生成方法设为“手动”以便让 CSR 字段可见。
    • 提交 CSR(包含在代码签名申请中)。
      • 用编辑器打开“mycsr.pem”文件后,复制该文件的整个内容(包括“BEGIN NEW CERTIFICATE REQUEST”和“END NEW CERTIFICATE REQUEST”两行),并将其粘贴到代码签名申请表的相应部分中。
    • 您提供的公司信息将接受验证。如有需要,注册机构(Registration Authority,RA)会联系您提供更多信息。
    • 代码签名证书颁发后,您会收到一封电子邮件,其中包含用于下载证书文件和任何关联的中级证书的链接。
  3. 在先前创建的同一个密钥库中安装代码签名证书。在以下示例中,假设代码签名证书文件的名称为“mycert.cer”,并且该证书文件为 PKCS#7 格式并位于当前的工作目录中。
    keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer
  4. 使用代码签名证书和私有密钥通过 jarsigner 对 JAR 文件签名
    jarsigner -verbose -keystore codesignstore -storepass -keypass myapp.jar codesigncert
    • “codesignstore”是密钥库的别名,该密钥库包含代码签名证书、私有密钥和证书链中的其他所有证书。
    • “myapp.jar”是未签名的输入文件,它将被签名版本的文件覆盖。使用“-signedjar”命令行选项可分别指定各个输入和输出文件名。
    • “codesigncert”是密钥库中的私有密钥的别名。
    以下示例在上面所演示的示例的基础上添加了时间戳选项。
    jarsigner -verbose -keystore codesignstore -storepass -keypass -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert
  5. 验证签名的 JAR 文件
    jarsigner -verify -verbose -certs myapp.jar
  6. 发布代码

方法 2 – 使用现有的 PKCS#12 文件(包含代码签名证书和密钥)

  1. 如有必要,通过以下链接下载 JDK:
    http://java.sun.com/javase/downloads/index.jsp
  2. 验证 PFX/P12 文件可以用于 jarsigner。执行以下命令,第 5 步中需要的别名将显示在输出结果的顶部附近:
    keytool -list -storetype pkcs12 -keystore mycert.pfx -v
  3. 使用 jar 工具通过 Java 类文件创建 JAR 文件:
    jar cvf myapp.jar myapp.class
  4. 使用代码签名证书和私有密钥通过 jarsigner 对 JAR 文件签名:
    jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
    • “mycert.pfx”是包含代码签名证书和私有密钥的 PFX/P12 文件的完整路径。该文件还应该包含所有中级证书。
    • “aliasname”显示在第 2 步的输出结果中。如果 PFX/P12 文件是从 Windows 导出的,则别名实际上就是 GUID。
    • 出现提示时,输入与 PFX/P12 文件中的私有密钥关联的密码。您还可以在命令行中加上“-storepass”选项来指定密码。
    • “myapp.jar”是未签名的输入文件,它将被签名版本的文件覆盖。使用“-signedjar”命令行选项可分别指定各个输入和输出文件名。
    以下示例在上面所演示的示例的基础上添加了时间戳选项:
    jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname"
  5. 验证签名的 JAR 文件
    jarsigner -verify -verbose -certs myapp.jar
  6. 发布代码

链接


本文是否有帮助?
感谢您的反馈。 要咨询客户服务代表,请使用上面的客户支持电话号码或聊天选项。
很高兴我们能有所助益! 我们还可以为您做些什么?
我们对此深感抱歉。 请告诉我们,什么问题令您费解,或者解决方案为何未能解决您的问题。