项目场景:
项目中需要秘钥加密,Java开发使用jdk生成最方便
问题描述
生成代码如下
在cmd中执行JDK中keytool的命令:
# keytool -genkeypair -alias zhangzhang -validity 36500 -keyalg RSA -dname "CN=jwt,OU=jtw,O=jwt,L=zurich,S=zurich, C=CH" -keypass 123456 -keystore zhangzhang.jks -storepass 123456
------------------------------------------------------------------------------------------
# keytool -genkeypair
-alias test 别名
-validity 36500 过期时间(天),默认大约90天
-keyalg RSA 加密算法
-dname "CN=jwt,OU=jtw,O=jwt,L=zurich,S=zurich, C=CH" 名字与姓氏,组织单位,城市,区县,国家代码
-keypass 123456 key密码,证书的密码
-keystore test.jks 生成的jks文件位置和名称
-storepass 123456 strore密码,证书库的密码
或者省略-dname参数(执行命令时会再次提示输入):
# keytool -genkeypair -alias zhangzhang -validity 36500 -keyalg RSA -keypass 123456 -keystore zhangzhang.jks -storepass 123456
原因分析:
执行完命令后,会警告:
JKS **库使用专用格式。建议使用 “keytool -importkeystore -srckeystore test.jks -destkeystore test.jks -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。
不安全最好备份
解决方案:
执行
keytool -importkeystore -srckeystore zhangzhang.jks -destkeystore zhangzhang.jks -destkeystore pkcs12
安装OPENSSL
安装完成后,配置环境变量。把openssl安装路径bin的路径(例如 C:\Program Files\OpenSSL-Win64\bin)加入到操作系统的系统环境变量Path中。
执行查看公钥的命令:
# keytool -list -rfc --keystore zhangzhang.jks | openssl x509 -inform pem -pubkey
导出
执行命令:
# keytool -export -alias zhangzhang -keystore zhangzhang.jks -file test-publickey.cer