Java代码签名指南

本指南将帮助您开始使用 OV / IV or EV 来自SSL.com的代码签名证书。 这些说明假定您的计算机上已安装Java开发工具包(JDK),并且 keytooljarsigner 命令包含在您的 PATH 中。 Yubikey 代码签名说明假定您的证书安装在 a 的插槽 9a 中 YubiKey FIPS 令牌,因为它们由SSL.com发行。

从1年2023月XNUMX日开始,SSL.com 的组织验证 (OV) 和个人验证 (IV) 代码签名证书已通过联邦信息处理标准 140-2 (FIPS 140-2) USB 令牌或通过我们的 eSigner 云代码签名服务颁发。 本次变更符合规定 符合证书颁发机构/浏览器 (CA/B) 论坛的新密钥存储要求,以提高代码签名密钥的安全性。

如果您还没有代码签名证书,并且不确定所需的类型,请阅读 这个FAQ.

SSL.com的 OV / IV代码签名 证书是保护您的代码免遭未经授权的篡改和破坏的一种经济方法,并且证书的使用期限仅为 $ 64.50每年.

马上订购

OV/IV 代码签名(仅适用于 1 年 2023 月 XNUMX 日之前颁发的 OV/IV 证书)

配置

方法1:生成 CSR 和浏览器中的PFX文件

快速开始使用Java代码签名的最简单方法是生成一个 CSR 和从SSL.com检索证书并将其安装在新的Java密钥库中的PFX文件。

请注意: 也可以签署您的 .jar 通过添加未转换的PFX文件直接添加文件 -storetype pkcs12 标记到 jarsigner 命令。
  1. 请按照 订购和检索代码签名证书 订购证书并使用证书和私钥下载PFX文件。
  2. 使用以下命令将PFX导入到具有相同密码的新密钥库中。 (更换 MY-CERTIFICATE.p12MY-KEYSTORE.jks 以及您的PFX文件的实际名称和您要提供给密钥库的文件名。 另请注意 destalias 是任意的,如果需要,您可以使用另一个别名。)
    keytool -importkeystore -srckeystore MY-PFX.p12 -srcstoretype pkcs12 -srcalias 1 -destkeystore MY-KEYSTORE.jks -deststoretype JKS -destalias代码签名
    请注意: 的价值 -srcalias 从SSL.com下载的PFX文件通常应为 1,但是您可以通过运行以下命令来确认 keytool -list -v -storetype pkcs12 -keystore MY-PFX.P12 并检查显示的值 Alias name.
  3. 系统将提示您输入目标密钥库的密码,然后输入源密钥库的密码(创建PFX时输入的密码)。 您可能还会看到一条以以下内容开头的警告消息 Warning: The JKS keystore uses a proprietary format。 您可以放心地忽略此消息。

方法2:生成密钥对和 CSR 用Java

如果您希望生成密钥对,并 CSR 对于Java,请遵循本节中的步骤。 该过程与创建一个 CSR 为 SSL /TLS 证书 在Java中。

创建密钥库和密钥对
  1. 首先,我们将创建一个密钥库和公用/专用密钥对。 Java使用带有扩展名的文件 .jks (Java KeyStore)来存储证书和加密密钥。 输入以下命令以生成密钥库和3072位RSA密钥对。 (更换 MY-KEYSTORE.jks 以及您想要文件具有的名称。)
    keytool -genkeypair-别名编码-keyalg RSA -keysize 3072 -keystore MY-KEYSTORE.jks
  2. 您将看到一系列提示。 首先,创建并验证密钥库的密码,然后输入并验证请求的信息。 (用您自己的信息替换所有大写字母中显示的值。)
    输入密钥库密码:重新输入新密码:您的名字和姓氏是什么? [未知]:FIRSTNAME LASTNAME 您的组织名称是什么? [未知]:公司 您所在城市或地区的名称是什么? [未知]:CITY 您所在的州或省的名称是什么? [未知]:STATE 本机的两个字母国家代码是什么? [未知]:US CN=FIRSTNAME LASTNAME、OU=DEPARTMENT、O=COMPANY、L=CITY、ST=STATE、C=US 是否正确? [否]:是的
  3. 密钥库文件已生成,您可以创建一个 CSR.
产生 CSR
  1. 输入以下命令以生成一个 CSR 从我们刚刚创建的密钥库中。 (更换 MY-KEYSTORE.jks 与您在创建密钥库时使用的值和 MY-CSR.csr 与您要用于的名称 CSR.)
    keytool -certreq -alias codesigning -file MY-CSR.csr -keystore MY-KEYSTORE.jks
  2. 输入您在生成密钥库时创建的密码。
    输入密钥库密码:
  3. 我们推荐使用 CSR 已经被创造了。 如果您准备从SSL.com订购证书,请在文本编辑器中打开文件以将其复制并粘贴到 CSR 订购时输入字段。 该文件的内容类似于以下示例:
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIC5TCCAc0CAQAwcDELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVNUQVRFMQ0wCwYD
    VQQHEwRDSVRZMRAwDgYDVQQKEwdDT01QQU5ZMRMwEQYDVQQLEwpERVBBUlRNRU5U
    MRswGQYDVQQDExJGSVJTVE5BTUUgTEFTVE5BTUUwggEiMA0GCSqGSIb3DQEBAQUA
    A4IBDwAwggEKAoIBAQCrRyk8VLs1THls+vfz0YtMJ3qYYl4c5c499d1YSbfQHa6L
    kIYhKTxvgdtbD+ePDigKB40CpeuMp5Yu8R6g2YIVBpGMrejAZYAmrzs6tfjpelh0
    ocSDwYr7H8qQ9jq6MfZTu6J7EjS5RMODB6MVq1usKg3H866xbi6lqAtcktEF+zlM
    4FW9Tm3H/DW2G7EnTjlMPzgaXNIU7lLar7YAWPJgv83NV8lQNCDW4lFlZLWBU95r
    YkJ4gfWUFUyPc+AiGbsyDdrVjPvF5yaebnFDrwheFaWeTTigSfLY688G7bpA8VvE
    lKioCl8nlJlc9HOBNKKdhs4qEtF0BwSE8tOgbkWPAgMBAAGgMDAuBgkqhkiG9w0B
    CQ4xITAfMB0GA1UdDgQWBBTmVpJp824krUaJKrQNhsSbVjJA1jANBgkqhkiG9w0B
    AQsFAAOCAQEALlux89RkXyHN4PQqQHbShSeTTWLURII+F+OSK9N1RS5l8V7AMcRM
    wvOkPP7JBRCKiaFGTW+5vcLQNnWRqQZMe0I4E0jzhL2gGsdChPIJy9Jwgn3Rzxmw
    8V0lBY1SHQ9LKgSK0jIer3PQhXHDJlE2g2Dx8nJ4WJk7l2OTF9Kkly9hg8MOQdeg
    VIcs3HLsVI9Cwd6UHRT6ruKL3+bRgEcb6qj+qcrKHkzN7KXbOEznd10nAm87wENS
    mTb012ZFMlpUDvPNAHQgoGJ6slA+pIoH1fvrkosjql7R/H7Q+onm37Qa6d9L2ZqM
    MhgNpNWVwI0UBU4Xy4p9oUCJnvHhQ7U+3w==
    -----END NEW CERTIFICATE REQUEST-----
订购和取回证书
  1. 请按照 订购和检索代码签名证书 通过步骤24。而不是立即单击 产生证书 按钮,选中标记为 我有我自己的 CSR.
    我有我自己的 CSR
  2. 贴上你的 CSR 进入表单字段,然后点击 产生证书 按钮。
    酱 CSR 并生成证书
  3. 点击 下载资料 按钮并保存 .crt 文件与生成密钥库的位置相同。
    下载资料
将证书导入密钥库
  1. 使用以下命令将证书导入到Java密钥库文件中。 (将MY-CERTIFICATE.crt和MY-KEYSTORE.jks替换为实际的文件名。)
    keytool -importcert-文件MY-CERTIFICATE.crt -keystore MY-KEYSTORE.jks -trustcacerts -alias代码签名
  2. 出现提示时输入密钥库密码。
    输入密钥库密码:  
  3. 您的证书已安装在密钥库中,您可以开始对文件进行签名了。
    证书回复已安装在密钥库中

用Jarsigner签名文件

  1. 使用以下命令将带有时间戳的数字签名添加到 .jar 文件。 (更换 /PATH/TO/MY-KEYSTORE.jksMY-JAR.jar 与您使用的实际文件名。 如果在设置密钥库时使用了其他别名,请用它代替 codesigning 在命令中。)
    jarsigner -tsa http://ts.ssl.com -keystore MY-KEYSTORE.jks MY-JAR.jar代码签名
    注意:也可以在 .jar 通过添加未转换的PFX文件直接添加文件 -storetype pkcs12 标记到 jarsigner 命令。

    请注意: 默认情况下,SSL.com 支持来自 ECDSA 密钥的时间戳。

    如果您遇到此错误: The timestamp certificate does not meet a minimum public key length requirement,您应该联系您的软件供应商以允许来自 ECDSA 密钥的时间戳。

    如果您的软件供应商无法允许使用普通端点,您可以使用此旧版端点 http://ts.ssl.com/legacy 从 RSA 时间戳单元获取时间戳。
  2. 在提示符下输入密钥库密码。
    输入密钥库的密码: 
  3. 文件已签名。 您可以使用以下命令来验证签名:
    jarsigner-verify-verbose MY-JAR.jar
  4. 如果文件已成功签名,则命令的输出应包含以下行:
    s =签名已验证
    

 

使用 YubiKey 进行 IV、OV 和 EV 代码签名

SSL.com的 EV代码签名 证书可提供Windows 10内核模式代码签名和即时SmartScreen信誉提升,所有这些低至 $ 240.00每年。 他们安全地交付 YubiKey FIPS 具有两因素身份验证的USB令牌。

马上订购

配置

安装PKCS#11驱动程序并创建eToken.cfg文件

Windows
  1. 按照OpenSC的说明安装OpenSC Windows快速入门.
  2. 找到OpenSC PKCS#11驱动程序。 默认安装位置是 C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll.
  3. 创建配置文件并将其保存在方便的位置(例如您的主目录)。 文件名是任意的,但是在本指南中,我们将使用 yubikey-pkcs11-java.cfg。 该文件应包含以下信息:
    名称= OpenSC-PKCS11描述=通过OpenSC库的SunPKCS11 = C:\ Program Files \ OpenSC Project \ OpenSC \ pkcs11 \ opensc-pkcs11.dll slotListIndex = 0
macos
  1. Install 安装 OpenSC。 如果你使用 家酿 作为软件包管理器,您可以使用以下命令安装OpenSC:
    酿造安装opensc
  2. 找到OpenSC PKCS#11驱动程序。 如果使用Homebrew安装,则该文件应位于以下位置: /usr/local/lib/opensc-pkcs11.so.
  3. 创建配置文件并将其保存在方便的位置(例如您的主目录)。 文件名是任意的,但是在本指南中,我们将使用 yubikey-pkcs11-java.cfg。 该文件应包含以下信息:
    名称= OpenSC-PKCS11描述=通过OpenSC库的SunPKCS11 = /usr/local/lib/opensc-pkcs11.so slotListIndex = 0

用Jarsigner签名文件

  1. 使用以下命令将带有时间戳的数字签名添加到 .jar 文件。 (更换 MY-JAR.jar 以及您正在使用的实际文件名。)
    jarsigner -tsa http://ts.ssl.com -providerClass sun.security.pkcs11.SunPKCS11 -providerArg yubikey-pkcs11-java.cfg -keystore无-storetype PKCS11 MY-JAR.jar“用于PIV身份验证的证书”
  2. 在密码提示下输入您的YubiKey PIN。
    输入密钥库的密码: 
  3. 文件已签名。 您可以使用以下命令来验证签名:
    jarsigner-verify-verbose MY-JAR.jar
  4. 如果文件已成功签名,则命令的输出应包含以下行:
    s =签名已验证
    
感谢您选择SSL.com! 如有任何疑问,请通过电子邮件与我们联系 Support@SSL.com,致电 1-877-SSL-SECURE,或只需单击此页面右下方的聊天链接。 您还可以在我们的网站上找到许多常见支持问题的答案 知识库.

 

Twitter
Facebook
LinkedIn
Reddit
电子邮件

保持信息灵通和安全

SSL.com 是网络安全领域的全球领导者, PKI 和数字证书。注册以接收最新的行业新闻、提示和产品公告 SSL.com.

我们希望收到您的反馈

参加我们的调查,让我们知道您对最近购买的想法。