我用RabbitMQ进行了实验。一个实验看起来像这样。我通过代理将一条消息从生产者发送到消费者,有两个用例
TLS enabled
和 TLS disabled
。对于这两个实验,我都使用 Wireshark 捕获网络数据包。
我对这两个实验的期望如下:
第一个实验成功了!在第二个实验中,我看到带有
TLS v1.3
协议的加密数据包,而不是我期望的 AMQPS
协议。看起来 RabbitMQ 在加密时将协议从 AMQP 切换到 TLS。如果是这样,那为什么还要费心使用 AMQPS呢?
AMQPS 是 基于 TLS 的 AMQP。
您必须配置 Wireshark 来解码 TLS 数据 - https://wiki.wireshark.org/TLS
注意: RabbitMQ 团队监控
rabbitmq-users
邮件列表,并且有时只回答 StackOverflow 上的问题。
@Luke Bakken 答案是正确的,尽管我仍然需要配置 Wireshark 来解密数据
让我为他的回答提供更多背景信息。即AMQPS是一个标签(约定)。当我们说“AMQPS”时,我们指的是“AMQP over SSL/TLS”。因此 AMPQS 本身并不是一个不同的协议;这只是使用 SSL/TLS 加密的 AMQP 流量。
当您为 AMQP(应用程序级协议)启用 TLS 时,它会通过 TLS 进行包装(隧道传输)。这就是为什么您会在 Wireshark 中看到加密流量的“TLS v1.3”数据包。 AMQP 流量存在,但现在已在 TLS 数据包内加密。
综上所述,@Marat Mkhitaryan 的观察(评论)也是正确的! Wireshark 中没有看到专用的 HTTPS 协议。相反,它是基于(包装/隧道)SSL/TLS 的 HTTP - 实际上是 TLS v1.n。