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

前提条件

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

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

如何生成CSR文件

假设申请的域名为demo.gworg.com,公司名称为Gworg, Inc.,部门是IT,公司在中国苏州市。按照如下步骤生成CSR文件:

创建JKS秘钥库文件

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

keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keypass password -sigalg SHA256withRSA -dname "cn=demo.gworg.com,ou=IT,o=Gworg,Inc.,l=Suzhou,st=Suzhou,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.jks 中server.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.gworg.com.csr

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

更多信息

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