本文介绍了如何使用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 mykey
中mykey参数为自定义别名。由于一个证书库中可以存放多张证书,通过别名来标识证书,别名可以是任意字符,例如:mykey。-keyalg RSA
中RSA参数为密钥算法。可选择的密钥算法有:RSA、ECC、DSA。但须注意,一些CA机构已不再颁发DSA算法的证书。–keysize 2048
中2048参数为密钥长度。keysize与keyalg存在默认对应关系:
- keyalg为RSA算法,keysize最低为2048bit,最高为4096bit。keysize并非越长越高,还要考虑非对称算法的运算开销。
- keyalg为DSA算法,keysize为1024bit
- keyalg为ECC算法,keysize为256bit
-keypass password
中password参数为密钥对密码,该密码最好与storepass password
中的password参数一致。-validity 365
中365参数为证书有效期天数。-keystore server.jks
中server.jks为密钥库名称。一般,默认在当前目录创建证书库,为绝对路径。-storetype JKS
中JKS参数为证书库类型。可用的证书库类型有: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.csr
中demo.trustasia.com.csr参数为CSR文件,用于提交至CA机构验证信息,从而获取证书。