【项目实战】使用Java Keytool工具生成的CSR给第三方云平台签名
一、背景
客户要求我们提供一个CSR文件,给他们签名,他们的服务器是部署在Amazon上的。
二、Keytool是什么?
Keytool 是一种 Java中的数字证书管理工具,用于管理密钥和证书。
它可以用来生成/申请数字证书、导入证书、导出证书、撤销以及管理密钥库。
它是 Java 开发工具包 (JDK) 的一部分。
Keytool 位于<JAVA_HOME>\bin\keytool.exe
要获得数字证书,需要使用数字证书管理工具(如KeyTool和OpenSSL)构建
三、 CSR是什么?
Certificate Signing Request,证书请求文件
CSR(Certificate Signing Request,数字证书签发申请)
交由CA机构签发,形成最终的数字证书。
四、使用Keytool 工具生成的CSR和OpenSSL工具生成的CSR区别
4.1 概念区别
Keytool是Java开发工具包中的一种命令行工具,用于管理Java KeyStore(JKS)中的证书。
OpenSSL是一种开源的安全套接字层(SSL)和Transport Layer Security(TLS)协议的工具。
4.2 使用的证书存储库
在生成CSR时,两者的主要区别在于使用的证书存储库不同,
Keytool使用JKS格式的证书存储库,而OpenSSL使用PEM格式的证书存储库。
4.3 命令行和参数
此外,在命令行和参数上也有所不同。
4.3.1 使用OpenSSL工具生成CSR文件
openssl req
-new 指定生成一个新的CSR
-nodes 指定私钥文件不被加密
-sha256 指定摘要算法
-newkey rsa:2048 rsa:2048 指定私钥类型和长度
-keyout myprivate.key 生成私钥
-out mydomain.csr 最终生成CSR文件mydomain.csr
4.3.2 使用Keytool工具生成CSR文件
在Java中可以使用Java密钥工具(Java Keytool),生成符合X509标准的CSR文件
以下是一个简单的示例命令:
具体步骤如下:
(1) 使用keytool生成私钥
在命令行中运行keytool,并使用-genkeypair
选项生成私钥
这个命令会生成一个名为 keystore.jks 的证书文件。
keytool
-genkeypair 生成密钥对
-keyalg RSA 指定密钥算法
-keysize 2048 指定密钥长度,默认1024位
-sigalg 指定数字签名算法 SHA1WithRSA
-keystore keystore.jks 指定密钥库文件名,指定密钥存储的密钥库
-storepass password 密钥库密码,指定证书保护密码
-validity 365 指定证书有效期,单位是天
-alias myalias 指定证书别名
-dname "CN=burt,OU=yh,O=yh,L=GY,ST=GZ,C=CN"
(2)使用-certreq选项生成和证书请求文件(CSR文件)
使用命令来生成一个名为mycsr.csr的CSR文件
keytool
-certreq
-keyalg RSA
-storepass password 密钥库密码
-alias myalias 指定了密钥对的名称, 别名
-file mycsr.csr 生成的CSR文件名,指定了输出文件的名称
-keystore keystore.jks 密钥库文件名,指定了存储密钥对的文件的名称
(3)使用生成的CSR文件
接下来,可以将这个生成的CSR文件
- 发给其他人进行签名
- 或者发送给证书颁发机构(CA)申请数字证书