我想知道是否可以设置具有ssl连接的activemq代理,其唯一目的是加密(类似于HTTPS,因为客户端不检查证书)。
从这种意义上讲,我尝试将代理设置为使用ssl连接,设置其密钥库等。
在客户端,我尝试使用fusesource中的示例代码作为基础,但未设置客户端信任库(我希望客户端接受每个证书)。
使用该配置,我无法连接客户端,并且在代理的日志中收到以下错误消息:
2013-05-06 15:25:32,848 |错误|无法接受连接:
javax.net.ssl.SSLException:没有可用的证书或密钥
对应于已启用的SSL密码套件。 |
org.apache.activemq.broker.TransportConnector | ActiveMQ传输
伺服器:ssl://0.0.0.0:61617?trace = true
此错误是否真的是因为客户端尚未将代理证书添加到其信任库中?如果是这样,有没有办法让客户端即使没有信任库也可以接受连接?
最佳答案
代理中我的SSL配置中存在错误,导致该错误消息。我不确定到底出了什么问题,因为我已经按照tutorial的要求重新完成了整个配置,并使其正确运行了代理。
为了获得ssl加密但不进行身份验证,我基本上必须将ssl连接设置为<transportConnector name="ssl" uri="ssl://0.0.0.0:61617?trace=true?needClientAuth=false"/>
和要么
如Resolving javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed Error?中所示,将证书直接添加到JVM
或创建一个信任管理器,以接受客户端上的所有证书,如Setting trust store programatically in ActiveMQSslConnectionFactory seems to fail中所示
关于ssl - 配置activemq客户端以将ssl仅用于加密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16400088/