gpt4 book ai didi

azure - 确保 Azure 服务总线通过 HTTPS 而不是 HTTP 连接

转载 作者:行者123 更新时间:2023-12-04 11:52:39 24 4
gpt4 key购买 nike

我想找到一种巧妙的方法来确保我的自托管 Web 服务通过 HTTPS 连接到 Azure 服务总线(主题和队列) - 我不希望它们退回到 HTTP。

// this ensures that HTTP is used instead of TCP sockets.
ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http;

上述设置可确保不尝试 TCP 套接字,但我找不到任何方法来确保在设置 HTTPS (SSL) 失败时不使用 HTTP 回退。

我的代理阻止 fiddler 与服务总线正常工作,因此当我启动 fiddler 时,它只会记录一堆从我的服务器发出的(未加密的)HTTP 流量 - 显然这与我想要的相反。

消息传递实体期望传递

形式的 URI
 Endpoint=sb://somenamespace.servicebus.windows.net/; ...

这阻止我指定 https://.... 。有谁知道如何以及在哪里可以禁止服务总线使用未加密的通信?

<小时/>

有趣的是(不一致?),命名空间管理器似乎并不介意使用包含 https 的 URL ...

var ns = NamespaceManager.CreateFromConnectionString(
"Endpoint=https://somenamespace.servicebus.windows.net/;..."
);
<小时/>

更新#1:启动wireshark,看起来通信是通过端口80进行的。它使用http 1.1流,这解释了为什么fiddler和代理不能很好地运行。 Azure 在 201 响应中发送网络流地址时会发生握手,然后 TCP 数据包开始通过端口 80 传递,包括如下所示的明文信息:

*sb://somenamespace.servicebus.windows.net:80/....application/ssl-tls
...
(later on)
...
http://www.microsoft.com/pki/mscorp/MSIT%20Machine%20Auth%20CA%202(1).crt

这让我强烈怀疑 TLS 流量是通过端口 80 发送的 - 尽管我希望有人能够确认这一点。

最佳答案

根据 Azure 上的一些演示[ 1 , 2 ]:

如果 TCP 端口 9350-9353 被阻止:

  • 监听器通过出站 HTTP(端口 80)监听。 “通过一对 HTTP 请求形成具有覆盖 TLS/SSL 的 TCP 等效隧道。”

  • 发件人通过出站 HTTPS(端口 443)发送。

这与我从wireshark 中观察到的结果相符。 Azure 服务总线似乎没有针对代理消息传递的非加密回退 - 即使它回退到端口 80,通信仍然通过 TLS/SSL 进行加密。

关于azure - 确保 Azure 服务总线通过 HTTPS 而不是 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541215/

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