本文介绍了如何使用Keytool工具生成Certificate Signing Request(CSR)证书签名请求文件。

前提条件

Keytool是Java Development Kit(JDK)安装包中提供的用于管理数字证书密钥的工具。

注意:基于对JDK版本安全性考虑,需使用JDK 8及以上版本。

如何生成CSR文件

假设申请的域名为demo.trustasia.com,公司名称为亚数信息科技,部门是IT部,公司在中国上海市。按照如下步骤生成CSR文件:

创建JKS秘钥库文件

运行下方命令行创建秘钥库文件:

keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keypass password -sigalg SHA256withRSA -dname "cn=demo.trustasia.com,ou=IT,o=亚数信息科技,l=Shanghai,st=Shanghai,c=CN" -validity 365 -keystore server.jks -storetype JKS -storepass password

说明

  • -alias mykeymykey参数为自定义别名。由于一个证书库中可以存放多张证书,通过别名来标识证书,别名可以是任意字符,例如:mykey。
  • -keyalg RSARSA参数为密钥算法。可选择的密钥算法有:RSA、ECC、DSA。但须注意,一些CA机构已不再颁发DSA算法的证书。
  • –keysize 20482048参数为密钥长度。keysize与keyalg存在默认对应关系:
    • keyalg为RSA算法,keysize最低为2048bit,最高为4096bit。keysize并非越长越高,还要考虑非对称算法的运算开销。
    • keyalg为DSA算法,keysize为1024bit
    • keyalg为ECC算法,keysize为256bit
  • -keypass passwordpassword参数为密钥对密码,该密码最好与storepass password中的password参数一致。
  • -validity 365365参数为证书有效期天数。
  • -keystore server.jksserver.jks为密钥库名称。一般,默认在当前目录创建证书库,为绝对路径。
  • -storetype JKSJKS参数为证书库类型。可用的证书库类型有:JKS、PKCS12等。JDK 9之前版本为JKS。JDK 9及之后版本默认为PKCS12类型。

创建CSR文件

通过运行下方命令行,创建CSR文件:

keytool -certreq -keyalg RSA -alias mykey -keystore server.jks -storetype JKS -storepass password -file demo.trustasia.com.csr

说明-file demo.trustasia.com.csrdemo.trustasia.com.csr参数为CSR文件,用于提交至CA机构验证信息,从而获取证书。

更多信息

有关CSR信息,参阅CSR概览
有关获取证书的方法,参阅如何获取数字证书