使用Keytool工具生成CSR
Keytool依赖
keytool是JDK中工具,对JDK版本要求不高,但基于现在JDK版本的安全性考虑,建议使用JDK8及以上版本
?
CSR生成
CSR是无法一步创建的,需要先生成keystore。
创建密钥库keystore
例:keytool -genkeypair -alias?www.601869.cn?-keyalg RSA -keysize 2048 -keypass changeit -sigalg SHA256withRSA -dname "cn= ?????????? keytool 是jdk提供的工具,该工具名为”keytool“ ?????????? -alias?www.601869.cn?自定义别名,下例中”www.601869.cn“为别名,可以是任意字符,只要不提示错误即可。因一个证书库中可以存放多个证书,通过别名标识证书。常起作mykey。 ?????????? -keyalg RSA 此处”RSA“为密钥的算法??梢匝≡竦拿茉克惴ㄓ校篟SA、EC、DSA。但一些CA已经不再颁发DSA类型的证书了 ?????????? –keysize 2048,密钥长度,下例中”2048“为密钥长度。keysize与keyalg默认对应关系:? 2048 (when using -genkeypair and -keyalg is “RSA”)? 1024 (when using -genkeypair and -keyalg is “DSA”)? 256 (when using -genkeypair and -keyalg is “EC”) ??????????? 密钥长度一般RSA支持最低2048bit,最高4096bit,并不是越长越高,也要考虑非对称算法的运算开销 ??????????? ECC算法默认256bit ?????????? -keypass changeit 密钥对的密码,此处”changeit“为本条目的密码(私钥的密码)。最好与storepass一致。 ?????????? -sigalg SHA256withRSA 此处”SHA256withRSA“为签名算法。keyalg=RSA时,签名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA。keyalg=DSA时,签名算法有:SHA1withDSA、SHA256withDSA。此处需要注意:MD5和SHA1的签名算法已经不安全,虽然目前CA接受这些不安全算法,但建议使用SHA256及以上的签名 ?????????? -dname "cn= ?????????? -validity 有效期, 此处”365“为证书有效期天数。 ?????????? -keystore server.jks 此处”server.jks“为密钥库的名称。此处也给出绝对路径。默认在当前目录创建证书库。 ?????????? -storetype JKS 此处”JKS “为证书库类型。可用的证书库类型为:JKS、PKCS12等。jdk9以前,默认为JKS。自jdk9开始,默认为PKCS12。 ?????????? -storepass changeit 此处”changeit“为证书库密码(私钥的密码)。最好与keypass 一致。 说明:? 上述命令,需要将 -dname 参数替换(尤其时域名要写对)、密码更改即可,其它可保持不变。 创建 得到 server.jks? ?生成CSR文件 keytool -certreq -keyalg RSA -alias?www.601869.cn?-keystore server.jks -storetype JKS -storepass changeit -file?www.601869.cn.csr ?????????? -file?www.601869.cn.csr?是生成得到CSR文件。 CSR需要提交,私钥则存储在JKS文件中。至此,keytool方式的CSR生成完毕。