使用Php Stomp的带Ssl的ActiveMq出现问题
将Php客户端应用程序连接到启用Ssl的ActiveMq安装时遇到问题。我看了很多资料,但我越来越困惑 到目前为止,我的安装程序通过users/groups.properties和authorizationPlugin使用身份验证。这在常规连接上运行良好 对于ActiveMQSSL,我跟随了几篇文章,创建了Jks存储和证书,并配置了以下内容使用Php Stomp的带Ssl的ActiveMq出现问题,php,ssl,activemq,stomp,Php,Ssl,Activemq,Stomp,将Php客户端应用程序连接到启用Ssl的ActiveMq安装时遇到问题。我看了很多资料,但我越来越困惑 到目前为止,我的安装程序通过users/groups.properties和authorizationPlugin使用身份验证。这在常规连接上运行良好 对于ActiveMQSSL,我跟随了几篇文章,创建了Jks存储和证书,并配置了以下内容 <sslContext> <sslContext keyStore="file:${activemq.base}/conf
<sslContext>
<sslContext keyStore="file:${activemq.base}/conf/server.ks"
keyStorePassword="$STORE_PASS"
trustStore="file:${activemq.base}/conf/server.ts"
trustStorePassword="$STORE_PASS" />
</sslContext>
<transportConnector
name="stomp+ssl" uri="stomp+ssl://0.0.0.0:61617?needClientAuth=true"/>
这不起作用,我在日志中得到一个空证书错误
另一篇使用FuseSource stomp的文章在建立连接时提供了包含客户端证书的选项,但在深入阅读本文之后,它看起来只是通过Sll证书进行身份验证,而不是使用用户/通行证
所以我回到了以前的stomp安装,认为有一种方法可以传递客户端证书文件,但似乎没有接口,而且headers参数上没有文档,我假设这不是如何进行的
有人能帮我解释一下我犯了什么复杂的错误。我不知道你是否仍然感兴趣,但以防万一有人偶然发现这个问题,希望得到答案 我们使用的是Stomp连接,这大致就是我们创建客户机的方式:
function createClient($broker_url, $login, $password) {
$client = new \Stomp\Client($broker_url);
$sslContext = [
'ssl' => [
'cafile' => '/path/to/cert',
'verify_peer' => true,
'verify_peer_name' => false,
'ciphers' => 'HIGH',
],
];
$client->getConnection()->setContext($sslContext);
$client->setLogin($login, $password);
$client->connect();
return new \Stomp\StatefulStomp($client);
}
$broker\u url的格式应为ssl://host:port
function createClient($broker_url, $login, $password) {
$client = new \Stomp\Client($broker_url);
$sslContext = [
'ssl' => [
'cafile' => '/path/to/cert',
'verify_peer' => true,
'verify_peer_name' => false,
'ciphers' => 'HIGH',
],
];
$client->getConnection()->setContext($sslContext);
$client->setLogin($login, $password);
$client->connect();
return new \Stomp\StatefulStomp($client);
}