使用keytool生成证书和秘钥

来源:互联网 发布:windows损坏文件 编辑:程序博客网 时间:2024/05/20 19:49

使用keytool生成证书和秘钥

Java中的 keytool.exe(位于  JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。

Keytool是一个Java数据证书的管理工具。Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:
密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trusted certificate entries)——只包含公钥

Alias(别名)
每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写

keystore的存储位置
在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,
如:对于window xp系统,会生成在系统的C:\Documentsand Settings\UserName\
文件名为“.keystore”

keystore的生成

所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。 
每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码。 
在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。

引用keytool -genkey-alias tomcat -keyalg RSA  -keystore d:\mykeystore -dname"CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypasschangeit -storepass -validity 180

参数说明:
-genkey
表示要创建一个新的密钥
-dname表示密钥的Distinguished Names,
CN=commonName
OU=organizationUnit    O=organizationName     L=localityName    S=stateName
C=country   Distinguished Names表明了密钥的发行者身份
-keyalg使用加密的算法,这里是RSA     -alias密钥的别名
-keypass私有密钥的密码,这里设置为changeit
-keystore 密钥保存在D:盘目录下的mykeystore文件中(为证书库位置)
-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出
-validity该密钥的有效期为 180天 (默认为90天)

步骤:

1.生成server端密钥

  1.  keytool -genkey -alias serverkey -keystore key OfServer.keystore
  

之后会出现如下信息,(第一次输入密码:打开keystore文件密码,第二次密码为秘钥,一般两次密码相同)


根据私钥导出服务端证书(将把证书库 monitor.keystore中的别名为 serverkey的证书导出到KeyOfServer.cer证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。

1.  keytool -export -alias serverkey -keystore keyOfServer.keystore -file server.crt  

将服务端证书,加入客户端的认证证书列表中(只包含公钥

1.keytool -import -alias serverkey -file server.crt -keystore trustOfClient.keystore 


2:生成client端密钥 

1.keytool -genkey -alias clientkey -keystore keyOfClient.keystore <span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

根据私钥导出客户端证书

 1.  keytool -export -alias clientkey -keystore keyOfClient.keystore -file client.crt  


将证书加到服务端信任列表

 1.  keytool -import -alias serverkey -file client.crt -keystore trustOfServer.keystore  

至此,客户端和服务器端的证书都已经生成了

参考文档:http://blog.csdn.net/a351945755/article/details/22782229

                   http://blog.csdn.net/anialy/article/details/8548139

1 0