rabbitmq服务器及c客户端TLS支持

tls基本流程

单向认证

c--Client Hello-->s
s--Server Hello-->c
s--Server Certificate-->c //服务器证书发送给客户端后,客户端根据CA证书进行判断是否受信任
s--Server Hello Done-->c
c--Client Key Exchange-->s //生成客户端秘钥给服务端
c--Change Cipher Spec-->s 
c--Finished-->s
s--Change Cipher Spec-->c
s--Finished-->c

双向认证

c--Client Hello-->s
s--Server Hello-->c
s--Server Certificate-->c
*s--Certificate request-->c //要求客户端发送证书
s--Server Hello Done-->c
*c--Client Certificate-->s //客户端发送证书,由服务端根据CA证书进行验证
c--Client Key Exchange-->s
*c--Certificate Verify-->s //将握手消息的hmac值用私钥进行签名,发送签名值给服务端。前面仅仅发送了客户端证书给服务器,这里需要证明自己有证书关联的私钥
c--Change Cipher Spec-->s
c--Finished-->s
s--Change Cipher Spec-->c
s--Finished-->c

openssl证书生成

参考链接:openssl证书生成
1.生成CA证书及私钥,关键输出:ca.cer ca.key

openssl genrsa -aes256 -out ca.key 2048
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CA/emailAddress=admin@test.com"
openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer

3.生成服务器证书及私钥,关键输出:server.cer server.key

openssl genrsa -aes256 -out server.key 2048
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=SERVER/emailAddress=admin@test.com"
openssl x509 -req -days 36500 -sha256 -extensions v3_req  -CA  ca.cer -CAkey ca.key  -CAserial ca.srl  -CAcreateserial -in server.csr -out server.cer

2.生成客户端证书及私钥,关键输出:client.cer client.key

openssl genrsa -aes256 -out client.key 2048
openssl req -new -sha256 -key client.key  -out client.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CLIENT/emailAddress=admin@test.com"
openssl x509 -req -days 36500 -sha256 -extensions v3_req  -CA  ca.cer -CAkey ca.key  -CAserial ca.srl  -CAcreateserial -in client.csr -out client.cer

使用openssl命令行工具进行测试

单向认证

openssl s_server -accept 443 -key server.key -cert server.cer
openssl s_client -connect localhost:443 -CAfile ca.cer

双向认证

openssl s_server -accept 443 -key server.key -cert server.cer -CAfile ca.cer -Verify 1
openssl s_client -connect localhost:443 -cert client.cer -key client.key -CAfile ca.cer

rabbitmq服务器开启tls

参考链接:https://www.rabbitmq.com/ssl.html
注意,如果使用密码生成私钥一定要填密码项
经典配置格式:

[
    {
        rabbit, [{tcp_listeners,[{"::", 6672}]},
                {ssl_listeners, [58771]},
                {ssl_options, [{cacertfile, "ca.cer"},
                              {certfile,   "server.cer"},
                              {keyfile,    "server.key"},
                              {verify,     verify_peer},
                              {password,  "t0p$3kRe7"},
                              {fail_if_no_peer_cert, false}]}
                ]
    }
].

使用rabbitmqctl status可以查看,最后有以下输出证明成功开启tls:

Interface: [::], port: 58771, protocol: amqp/ssl, purpose: AMQP 0-9-1 and AMQP 1.0 over TLS

rabbitmq c客户端使用tls

使用下面链接的c库编译测试工具
https://github.com/alanxz/rabbitmq-c/tree/v0.11.0

mkdir build && cd build
cmake ..
cmake --build . [--config Release]

测试:

./examples/amqp_ssl_connect "localhost" 58771 100 "./openssl/ca.cer" "./openssl/client.key" "./openssl/client.cer"

正确输出:

Enter PEM pass phrase:
Done
  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要调整RabbitMQ服务器客户端的配置以增加缓冲区大小和处理容量,您可以采取以下步骤: 1. RabbitMQ服务器配置修改: - 打开RabbitMQ服务器的配置文件,通常位于`/etc/rabbitmq/rabbitmq.conf`或`/etc/rabbitmq/rabbitmq.config`。 - 在配置文件中查找或添加相关参数,例如`vm_memory_high_watermark`、`disk_free_limit`和`channel_max`等。 - 根据您的需求,适当修改这些参数的值。例如,增加`vm_memory_high_watermark`来增加内存使用限制,增加`disk_free_limit`来增加磁盘空间使用限制,增加`channel_max`来增加通道的最大数量限制。 - 保存配置文件并重新启动RabbitMQ服务器,使更改生效。 2. 客户端库配置修改: - 根据您所使用的编程语言和客户端库的要求,查找相应的配置选项。 - 例如,对于Python中的pika库,您可以使用`connection_parameters`对象来设置参数。例如,可以设置`frame_max`来增加消息帧的最大大小限制。 - 根据您的需求,修改相应的配置参数值,并将其应用于您的客户端代码。 请注意,根据您的具体需求和环境,可能还有其他相关的配置参数可供调整。因此,建议仔细阅读RabbitMQ官方文档和相关客户端库的文档,以了解适用于您场景的最佳实践和建议。 在修改配置之前,建议备份原始配置文件,并确保您了解每个参数的含义和可能的影响。此外,调整配置可能需要在RabbitMQ服务器重启之后才能生效。 如果您对特定的配置参数和调整方法有疑问,建议参考RabbitMQ官方文档或向RabbitMQ社区寻求支持和建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值