使用jdk自带的证书制作工具keytool生成秘钥对

keytool的概念

keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。

在JDK 1.4以后的版本中都包含了这一工具,它的位置%JAVA_HOME%\bin\keytool.exe,如下图所示

JAVA 命令 密钥库 所有 java密钥生成_https

二:keytool的用法

JAVA 命令 密钥库 所有 java密钥生成_JAVA 命令 密钥库 所有_02

三:创建证书

创建证书主要是使用" -genkeypair",该命令的可用参数如下

JAVA 命令 密钥库 所有 java密钥生成_keytool_03

keytool -genkey -alias 你的证书别名 -keyalg 密钥算法 -keystore 证书库文件保存的位置和文件名 -keysize 密钥长度 -validity 证书有效期天数

示例Cmd命令:keytool -genkey -alias testalias -keyalg RSA -keystore e:/software/ssl/test.keystore -keysize 1024 -validity 36500

功能:


    创建一个别名为test1的证书,该证书存放在名为test.keystore的密钥库中,若test.keystore密钥库不存在则创建。

    参数说明:

解释一下几个参数的含义

-genkey:创建证书

-alias:证书的别名。在一个证书库文件中,别名是唯一用来区分多个证书的标识符,该别名是公开的

-keyalg:密钥的算法,非对称加密的话就是RSA

-keystore:证书库文件保存的位置和文件名。如果路径写错的话,会出现报错信息。如果在路径下,证书库文件不存在,那么就会创建一个

-keysize:密钥长度,一般都是1024


-validity:证书的有效期,单位是天。比如36500的话,就是100年

JAVA 命令 密钥库 所有 java密钥生成_keytool_04

注意:


1.密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等,此密码为秘钥库的密码,不是秘钥的密码,如上图所示,这是两个密码


    2."名字与姓氏"应该是输入域名,而不是我们的个人姓名,其他的可以不填


    执行完上述命令后,在操作系统的用户目录下生成了一个"test.keystore"的文件,如下图所示()

JAVA 命令 密钥库 所有 java密钥生成_库文件_05

查看密钥库里面的证书

范例:查看test.keystore这个密钥库里面的所有证书

Cmd命令:keytool -list -keystore e:/software/ssl/test.keystore

JAVA 命令 密钥库 所有 java密钥生成_JAVA 命令 密钥库 所有_06

导出到证书文件

范例:将名为test.keystore的证书库中别名为test1的证书条目导出到证书文件test.crt中
Cmd命令:keytool -export -alias testalias -file e:/software/ssl/test.crt -keystore e:/software/ssl/test.keystore
解释一下:
-export:用于导出公钥文件的命令参数
-alias:你的证书在证书库中的别名,也是唯一标识
-keystore:完整的证书库文件所在的目录及文件名
-file:导出后的公钥文件所在的完整目录及文件名
keytool仍然会要求你输入证书库的密码,注意是”证书库“的密码

JAVA 命令 密钥库 所有 java密钥生成_库文件_07

运行结果:在操作系统的用户目录(gacl)下生成了一个"ktminjured.crt"的文件,如下图所示

JAVA 命令 密钥库 所有 java密钥生成_rsa_08

六:导入证书

范例:将证书文件test.crt导入到名为test_cacerts的证书库中

Cmd命令:keytool -import -keystore injured_cacerts -file e:/software/ssl/test.crt

JAVA 命令 密钥库 所有 java密钥生成_https_09

查看证书信息

范例:查看证书文件test.crt的信息
keytool -printcert -file e:/software/ssl/test.crt

JAVA 命令 密钥库 所有 java密钥生成_rsa_10

也可以双击test.crt证书文件打开,可导出cre文件,在nginx的https配置中会用到

JAVA 命令 密钥库 所有 java密钥生成_JAVA 命令 密钥库 所有_11

在证书的详细信息中可以将证书导出成其他格式,点击【复制到文件】,下一步,然后选择要导出的格式然后下一步生成即可。

JAVA 命令 密钥库 所有 java密钥生成_库文件_12

JAVA 命令 密钥库 所有 java密钥生成_keytool_13

JAVA 命令 密钥库 所有 java密钥生成_keytool_14

删除密钥库中的条目

范例:删除密钥库test.keystore中别名为testalias的证书条目
keytool -delete -keystore e:/software/ssl/test.keystore -alias testalias

JAVA 命令 密钥库 所有 java密钥生成_库文件_15

修改证书条目的口令

范例:将密钥库test.keystore中别名为testalias的证书条目的密码修改为123456
keytool -keypasswd -alias testalias -keystore e:/software/ssl/test.keystore

JAVA 命令 密钥库 所有 java密钥生成_rsa_16

后续再写一下tomcat和nginx的https配置