Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Php Stomp的带Ssl的ActiveMq出现问题_Php_Ssl_Activemq_Stomp - Fatal编程技术网

使用Php Stomp的带Ssl的ActiveMq出现问题

使用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

将Php客户端应用程序连接到启用Ssl的ActiveMq安装时遇到问题。我看了很多资料,但我越来越困惑

到目前为止,我的安装程序通过users/groups.properties和authorizationPlugin使用身份验证。这在常规连接上运行良好

对于ActiveMQSSL,我跟随了几篇文章,创建了Jks存储和证书,并配置了以下内容

<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);
}