我想找到一种方法来确保我的自托管Web服务通过HTTPS连接到Azure Service Bus(主题和队列) - 我不希望它们回退到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:// .... 。有没有人知道如何以及在哪里可以禁止Service Bus使用未加密的通信?
有趣的是(不一致?),命名空间管理器似乎并不介意使用带有https的URL ...
var ns = NamespaceManager.CreateFromConnectionString(
"Endpoint=https://somenamespace.servicebus.windows.net/;..."
);
更新#1:启动wireshark,看起来通信是通过端口80.它使用http 1.1流,这解释了为什么fiddler和代理没有很好地发挥作用。握手发生在azure在201响应中发送webstream地址,然后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发送的 - 尽管我希望有人能够确认这一点。