KeyTool是Java中的数字证书管理工具,用于数字证书的申请、导入、导出和撤销等证书管理操作,位于
要获得数字证书,我们需要使用数字证书管理工具(如KeyTool和OpenSSL)构建CSR(Certificate Signing Request,数字证书签发申请),交由CA机构签发,形成最终的数字证书。
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)
keytool -list -v -keystore fuxy.keystore
-list 查看证书
-v 列出详细信息
-keystore 指定证书库
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。
新建一个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
错误信息:
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
#构建已发行证书存放目录
certsmkdir certs
#构建新证书存放目录newcerts
mkdir newcerts
#构建私钥存放目录private
mkdir private
#构建证书吊销列表存放目录crl
mkdir crl
openssl rand -out private/.rand 1000
echo '' > index.txt
echo 01 > serial
openssl genrsa -aes256 -out private/ca.key.pem 2048
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"
openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certs/ca.cer
openssl genrsa -aes256 -out private/server.key.pem 2048
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"
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.