Java证书管理工具Keytool的使用
前置知识域
Keytool
Keytool简介
- Keytool是Java数据证书的管理工具,该工具位于JDK的安装目录下。所有的数字证书采用alias(别名)进行区分,并存入到Keystore中,Keystore中的每个证书包含该条证书的私钥、公钥与对应的数字证书信息。
- Keystore中的一个Key可以导出为数字证书文件,包括主题信息与对应公钥。
- Trusted certificate entries为可信任的证书实体,一般只包含信任的公钥。
- keypass是keystore中key的密码,该密码可以获取公私钥对
- storepass是kestore的密码,该密码可以获得存储在keystore中的key
Keytool主要命令
- 在windows下,可以通过命令行
keytool
使用keytool工具 主要参数说明
-genkeypair
表示要创建一个新的密钥-dname
表示密钥的Distinguished Names,表明了密钥的发行者身份,以下是该部分的参数解释:CN=commonName
注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhostOU=organizationUnit
O=organizationName
L=localityName
S=stateName
C=country
-keyalg
使用加密的算法-alias
key的别名-keypass
key的密码-keystore
keystore保存的文件-storepass
keystore的密码-validity
该key的有效时间-export
导入一个key-rfc
以RFC样式输出-list
列出keystore中的条目-v
验证key-importkeystore
导入keystore
无CA证书签发
- 使用下列命令在命令行中利用keytool工具生成一个key,并存储在
E:\server.keystore
文件下,该key的别名为server,将作为服务端的key,同时设置keysize
大小为1024,validity
有效期为365天,key与keystore的密码均为password
keytool -genkey -alias server -keypass password -keyalg RSA -keysize 1024 -validity 365 -keystore E:\server.keystore -storepass password
- 使用下列命令导入第一步生成的key,并以二进制形式将公钥输出到
E:\server.cer
文件
keytool -export -alias server -keystore E:\server.keystore -storepass password -file E:\server.cer
- 若需要以rfc格式输出,可以采用下列命令
keytool -export -alias server -keystore E:\server.keystore -storepass password -rfc -file E:\server.crt
- 补充说明,
.cer
文件一般为二进制文件
- 使用下列命令行将先前生成的server key导入到
E:\tclient.keystore
,作为客户端的信任证书实体
keytool -import -alias server -file E:\server.cer -keystore E:\tclient.keystore
- 若采用无CA的单向认证,上述步骤已完成了Keytool部分的使用,以下步骤将以类似的方法生成客户端的key,并存储在服务端存储信任证书实体的keystore中。
- 使用下列命令生成客户端的key,参数说明如第一步所示。
keytool -genkey -alias client -keypass password -keyalg RSA -keysize 1024 -validity 365 -keystore E:\client.keystore -storepass password
- 使用下列命令将客户端的key公钥导出为
E:\client.cer
,参数说明如第二步所示
keytool -export -alias client -keystore E:\client.keystore -storepass password -file E:\client.cer
- 使用下列命令将客户端的key公钥导入到
E:\tserver.keystore
作为服务端的信任证书实体
keytool -import -alias client -file E:\client.cer -keystore E:\tserver.keystore
含有CA的证书签发
待补充
评论已关闭