gpt4 book ai didi

无法使用 SSL 支持连接到 RabbitMq-c

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:44 25 4
gpt4 key购买 nike

我正在尝试在 rabbitmq-c library 中运行 SSL 示例“amqps_listenq” (ssl-plumbing 分支)使用命令行

$./amqps_listenq [ServerIP]  5671 hello ./cacert.pem ./key.pem ./cert.pem

出现以下错误

opening SSL/TLS connection

当我尝试调试代码时,它在 main 中的以下 block 中失败

status = amqp_socket_open(socket, hostname, port);
if (status) {
die("opening SSL/TLS connection");
}

当我调试“amqp_socket_open”方法时,我发现它在 amqp_openssl.c 的以下 block 中失败

if (self->verify) {
int status = amqp_ssl_socket_verify(self, host);
if (status) {
return -1;
}
}

我跟踪了 amqp_ssl_socket_verify 中的错误,发现我在以下 block 中失败了

#ifdef _MSC_VER
#define strcasecmp _stricmp
#endif
if (strcasecmp(host, (char *)utf8_value)) {
goto error; //<-- it fails here
}
#ifdef _MSC_VER
#undef strcasecmp
#endif
exit:
OPENSSL_free(utf8_value);
return status;
error:
status = -1;
goto exit;

状态等于-1知道问题出在哪里吗??

请注意,即使我没有使用以下代码设置证书,我也可以在同一台服务器上使用 SSL 轻松连接到 RabbitMq

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("[ServerIP]");
factory.setPort(5671);
factory.useSslProtocol();
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

channel.queueDeclare("hello_ssl", false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, consumer);

while (true){
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [" + i + "] Received '" + message + "'");
}

最佳答案

我一直在调试 librabbitmq,我看到了完全相同的行为。 utf8_value 变量包含“amqp”,而 host 变量包含 amqp 服务器主机名。

我有一个解决办法:

-  if (strcasecmp(host, (char *)utf8_value)) {
- goto error;
+
+ if(strcasecmp((char *)utf8_value, "amqp")) {
+ if (strcasecmp(host, (char *)utf8_value) ) {
+ goto error;
+ }
}

我在这里进行了 fork 和修补:https://github.com/drainware/rabbitmq-c

关于无法使用 SSL 支持连接到 RabbitMq-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com