"X.509证书CN = servicebus.windows.net"Azure Service Bus Queue

Erk*_*rel 10 azure x509certificate azure-web-sites azure-servicebus-queues

我们使用填充队列的Azure Service Bus和Azure Web App.它们位于同一资源组中.我们使用WindowsAzure.ServiceBus v2.6.5.

我们很少得到这个错误:

X.509证书CN = servicebus.windows.net不在受信任的人员商店中.X.509证书CN = servicebus.windows.net链建设失败.使用的证书具有无法验证的信任链.替换证书或更改certificateValidationMode.无法将证书链构建到受信任的根颁发机构.

问题:Azure上存在此内部错误吗?如果不是,我们怎么做才能得到这个错误?

Erk*_*rel 6

我设法找到了有关此问题的更多信息.首先,需要确定的是这是一个纯客户端问题,这就是没有跟踪ID的原因.客户端拒绝使用Service Bus完成TLS握手.

这是一个已知问题,这是Microsoft管理证书的方式以及如何在非HTTP(S)传输上使用它们的已知问题.当承载Microsoft的中间证书的端点不可用或缓慢或客户端因任何原因无法访问时,会发生错误.我们正在研究将所需的额外证书注入到SBMP和AMQP传输的TLS握手中的解决方法,类似于HTTP.SYS的完成方式,因此不需要这个额外的请求.

可用的直接解决方法是启用 ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https 这将强制所有流量使用受先前TLS/HTTPS握手保护的WebSockets隧道,并且该握手携带所需的中间证书.建立连接时,WebSockets握手确实会产生一些额外的延迟,但是否则会与常规通信模式相媲美.通过该隧道使用的消息传递协议仍然是AMQP或NetMessaging,因此在选择此选项时,您不必担心获取HTTP特性.

这是微软的回应.我会申请这个,如果我在某段时间内没有遇到任何问题,我会接受这个作为答案.谁面临这个问题,他们也可以尝试这个.

编辑:

ConnectivityMode.Https只是在可用的服务总线3中.由于Signalr上的问题,我必须使用servicebus 2 .因此我无法应用此解决方案.


Tob*_*lez 1

我相信肯定是缺少了一份证书。

从这个堆栈溢出帖子/sf/answers/1695718531/这里有一个可能有帮助的链接:https://corp.sts.microsoft.com/Onboard/ADFSOnboard.htm#Corp-STS-Certificates