我已经配置了[ActiveMQ]http://activemq.apache.org/ http://activemq.apache.org/)通过以下方式使用 ssl 上下文RedHat 的 SSL/TLS 教程 https://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.1/html/ActiveMQ_Security_Guide/files/SSL-Tutorial.html。然后我将 ActiveMQ/conf 目录中的客户端密钥库文件转换为 .pem 格式。为此我遵循将 Java 密钥库转换为 PEM 格式 https://stackoverflow.com/questions/652916/converting-a-java-keystore-into-pem-format在堆栈溢出上。
在这两个步骤之后我尝试使用 Eclipse泛美卫生组织 MQTT C 客户端 https://eclipse.org/paho/clients/c/通过 SSL 连接到 ActiveMQ Broker,但它返回状态 -1。
代码如下:
MQTTClient client;
MQTTClient_connectOptions conn_opts =MQTTClient_connectOptions_initializer;
MQTTClient_message pubmsg = MQTTClient_message_initializer;
MQTTClient_deliveryToken token;
MQTTClient_SSLOptions ssl_opts = MQTTClient_SSLOptions_initializer;
int rc;
MQTTClient_create(&client, ADDRESS, CLIENTID,
MQTTCLIENT_PERSISTENCE_NONE, NULL);
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
conn_opts.ssl = &ssl_opts;
conn_opts.ssl->keyStore = "amq-client.pem";
conn_opts.ssl->privateKeyPassword = "password";
conn_opts.ssl->enabledCipherSuites = "DEFAULT";
conn_opts.ssl->enableServerCertAuth = 0;
MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered);
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to connect, return code %d\n", rc);
exit(-1);
}
我的配置有什么错误吗?
请帮我解决这个问题
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)