您的位置:首页 > 其它

使用keytool生成证书和秘钥

2016-01-02 16:05 309 查看

使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: