为apache QPID创建密钥库和信任库

时间:2016-05-03 13:23:09

标签: java ssl keytool sslhandshakeexception qpid

我正在尝试使用keytool生成与Apache QPid的ssl连接的自签名证书。

所以我首先为服务器和客户端创建了密钥库和证书。 我做了很多次,最后一次来自这个网站: http://ruchirawageesha.blogspot.fr/2010/07/how-to-create-clientserver-keystores.html

所以现在我有1个服务器密钥库和1个客户端密钥库,两个密钥库中都有服务器和客户端条目。

之后,我尝试使用以下命令为服务器和客户端创建信任库:

keytool -import -trustcacerts -alias server -file server.cert -keystore clienttruststore -storepass

(我和onoud -trustcacerts尝试了最后一个命令,因为我在网上找到了)。 我使用相同的命令使用客户端而不是服务器和服务器而不是客户端

来创建第二个信任库

我在Qpid中为服务器添加了keystore和truststoregenerated。

我在我的申请中使用了其他人。

但是当我的应用程序尝试连接到QPid时(在connectionFactory.createConnection()上),我有一个例外: javax.net.ssl.SSLHandshakeException:常规SSLEngine问题。

QPid用于创建另一个应用程序的模拟器。 客户端应用程序可以使用服务器提供的证书与“真实”服务器建立连接

当客户端应用程序与真实服务器一起使用时,连接有效,因此我认为问题来自证书,密钥库或信任库的创建,或来自QPid配置。

我在互联网上寻找这个例外,但我发现有人说证书可能不可用。

如果我用amqp:// localhost替换url:amqps:// localhost我可以连接到代理,但是我有一个错误:当我使用连接时远程关闭传输连接(就像我这样做:连接。 getClientID())

所以你知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

经过大量试验,我发现问题是证书中的CN(证书名称?)。

我有一个更详细的例外 没有主题替代名称。

我发现问题是CN没有与URL连接相关联。 我还发现我应该使用localhost for CN(我的qpid现在与客户端在同一台计算机上)。 但是我仍然和localhost有同样的问题。 我也尝试使用我的IP地址,并获得相同的结果。

我认为问题是网址是amqps:// localhost:XXXX而不是https:// ....就像我在论坛上看到的那样。

但我无法找到使用它的方法。

有人可以帮助我找到CN应该是什么吗?