keytool

1.keytool的概念

KeyTool是Java中的数字证书管理工具,用于数字证书的申请、导入、导出和撤销等证书管理操作,位于<JAVA_HOME>\bin\keytool.exe
要获得数字证书,我们需要使用数字证书管理工具(如KeyTool和OpenSSL)构建CSR(Certificate Signing Request,数字证书签发申请),交由CA机构签发,形成最终的数字证书。

2.keytool命令

2.1 创建证书库

keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1WithRSA -validity 36000 -alias cert1 -keystore fuxy.keystore -dname "CN=fuxy,OU=yh,O=yh,L=GY,ST=GZ,C=CN" -storepass changeit
 -genkeypair  生成密钥对
 -keyalg 指定密钥算法
 -keysize 指定密钥长度,默认1024位
 -sigalg 指定数字签名算法 SHA1WithRSA
 -validity 有效期,单位天
 -alias 证书别名
 -keystore 指定密钥存储的密钥库
 -storepass  指定证书保护密码

-dname 输入证书用户信息

C-----国家(Country Name)
ST----省份(State or Province Name)
L----城市(Locality Name)
O----公司(Organization Name)
OU----部门(Organizational Unit Name)
CN----产品名(Common Name),应该是域名,若输成了姓名,和真正运行的时候域名不符,会出问题
emailAddress----邮箱(Email Address)

2.2 查看证书库

keytool -list -v -keystore fuxy.keystore
-list   查看证书
-v 列出详细信息 
-keystore  指定证书库

在这里插入图片描述

2.3 导出公钥文件

keytool -exportcert -alias cert1 -rfc -file cert1.crt -keystore fuxy.keystore
-rfc  指定以Base64编码格式输出,否则为二进制
-alias 指定要导出的证书
-file 指定输出文件
-keystore 指定证书库
-storepass  输入证书保护密码

Base64编码的证书包含“----- BEGIN CERTIFICATE -----”和“----- END CERTIFICATE -----”语句。扩展名常用pem,crt,cer。

2.4 导入证书文件到证书库

新建一个new.keystore的证书库,只包含cert3证书

keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1WithRSA -validity 36000 -alias cert3 -keystore new.keystore -dname "CN=fuxy,OU=yh,O=yh,L=GY,ST=GZ,C=CN" -storepass changeit

导入cert1证书到new证书库

keytool -importcert -alias cert1 -file cert1.crt -keystore new.keystore -storepass changeit -v

-v 详细输出
验证:
在这里插入图片描述
在这里插入图片描述

3.解决报错

错误信息:

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

解决办法:将安全证书导入到java的cacerts证书库,changeit为jdk cecerts证书库的默认密码

keytool -importcert -alias cfcnat -keystore ${JAVA_HOME}/jre/lib/security/cacerts -file /u01/natcfc.pem -storepass changeit
 keytool -importcert -alias cfcnat -keystore "${JAVA_HOME}/jre/lib/security/cacerts" -file "/u01/xxx.pem" -storepass changeit

4.openssl 生成证书

4.0 生成目录

#构建已发行证书存放目录
mkdir certs
#构建新证书存放目录newcerts
mkdir newcerts
#构建私钥存放目录private
mkdir private
#构建证书吊销列表存放目录crl
mkdir crl
openssl rand -out private/.rand 1000
echo '' > index.txt
echo 01 > serial

4.1 生成根证书私钥

 openssl genrsa -aes256 -out private/ca.key.pem 2048

4.2 生成根证书签发申请

openssl req -new -key private/ca.key.pem -out private/ca.csr -subj "/C=CN/ST=GZ/L=GY/O=yh/OU=devDpt/CN=*.fuxy.com"

4.3 签发根证书

openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certs/ca.cer

4.4 生成服务器证书私钥

 openssl genrsa -aes256 -out private/server.key.pem 2048

4.5 生成服务器证书签发申请

openssl req -new -key private/server.key.pem -out private/server.csr -subj "/C=CN/ST=GZ/L=GY/O=yh/OU=devDpt/CN=*.fuxy.com"

4.6 签发服务器证书

openssl x509 -req -days 36500 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.cer

链接: HttpClient 调用https接口的三种方式.
链接: keytool 用法总结.
链接: 解决报错.
链接: keytool其他命令.

链接: SSL证书配置(https访问接口, 单向认证和双向认证).
链接: 使用keytool生成公钥、私钥、证书并且读取出来,使用私钥签名jar并验证(转).
链接: 网络安全 / crt、pem、pfx、cer、key 作用及区别.

链接: 证书格式.
链接: 使用keytool生成keystore密钥文件,并提取公钥和私钥,签名、验签.

链接: pks转pem.

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值