ActiveMQ SSL应用之二 使用keytool工具生成密钥和证书文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangying2124/article/details/52833176

一、主要内容
使用java自带的keytool工具生成RSA的密钥、证书文件。

二、操作步骤
1、生成服务端私钥,并导入到服务端keyStore文件中,此操作生成broker1.ks文件,保存服务端私钥,供服务端使用。
在命令行输入:

keytool -genkey -alias broker -keyalg RSA -keyStore broker1.ks

会提示你输入以下信息,尽量按真实的信息填写,命令完成后,会在操作目录下生成broker1.ks文件,如下图所示:
这里写图片描述

2、根据服务端私钥导出服务端证书,此操作生成broker_cert文件,该文件为服务端的证书。
在命令行输入:

keytool -export -alias broker -keyStore broker1.ks -file broker_cert

要求输入刚刚创建的密钥文件的密码,命令完成后,会在操作目录下生成broker_cert证书文件,如下图所示:
这里写图片描述

3、导入服务端证书到客户端的Trust keyStore中。此操作生成client.ts文件,保存服务端证书,供客户端使用。
在命令行输入:

keytool -import -alias broker -keystore client1.ts -file broker_cert

要求输入两遍密钥文件密码,并且要确认是否信任证书,选择信任(输入”y”),操作完成后,会在操作目录下生成client1.ts客户端证书文件,如下图所示:
这里写图片描述

4、生成客户端私钥,并且导入到客户端keyStore文件中,此操作生成client1.ks文件,保存客户端私钥,供客户端使用。
在命令行输入:

keytool -genkey -alias client -keyalg RSA -keyStore client1.ks

会提示你输入以下信息,尽量按真实的信息填写,命令完成后,会在操作目录下生成client1.ks客户端密钥文件,如下图所示:
这里写图片描述

5、根据客户端私钥导出客户端证书。
在命令行输入:

keytool -export -alias client -keystore client1.ks -file client_cert

要求输入客户端密钥文件的密码,命令完成后,会在操作目录生成client_cert客户端证书文件,如下图所示:
这里写图片描述

6、导入客户端证书到服务端的Trust keyStore中,此操作生成broker1.ts文件,保存客户端证书,供服务端使用。
在命令行输入:

keytool -import -alias client -keystore broker1.ts -file client_cert

要求输入两次客户端密钥文件的密码,注意是客户端密钥的密码,需要信任该证书,命令完成后会在操作目录下生成broker1.ts服务端证书,如下图所示:
这里写图片描述

以上6步操作,共生成6个文件,如下图所示:
这里写图片描述

三、密钥和证书的存放位置
Server端需要:
1)keyStore 保存服务端的私钥:broker1.ks文件
2)Trust keyStore 保存客户端的授权证书: broker1.ts文件
Client端需要:
1)keyStore 保存客户端的私钥: client1.ks文件
2)Trust keyStore 保存服务端的授权证书: client1.ts文件

在本篇中,Server端指的是ActiveMQ目录,Client端指的是Java Demo类,Tomcat容器或Jboss容器。

注意事项:
1、ActiveMQ自带了密钥和证书文件,在ACTIVE_HOME/conf目录下,命名为broker.ks,client.ks等,密钥密码为password,但这几个文件我在使用时发现会出现null certchain错误。
2、生成文件的命名问题,原则上可以随意命名,为了方便还是建议区分一个服务端和客户端文件,这里为了不与ActiveMQ自带文件冲突,命名成了broker1.ks,client1.ks。

猜你喜欢

转载自blog.csdn.net/huangying2124/article/details/52833176
今日推荐