繁体   English   中英

“ X.509证书CN = servicebus.windows.net” Azure服务总线队列

[英]“The X.509 certificate CN=servicebus.windows.net” Azure Service Bus Queue

我们使用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上是否存在此内部错误? 如果不是,我们该怎么办才能避免出现此错误?

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

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

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

这是微软的回应。 我将应用此方法,如果一段时间后我没有遇到任何问题,我会接受此作为答案。 谁遇到这个问题,他们也可以尝试。

编辑:

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

我相信一定缺少证书。

从此堆栈溢出帖子https://stackoverflow.com/a/24224550/4735373,这里是一个可能有用的链接: https : //corp.sts.microsoft.com/Onboard/ADFSOnboard.htm#Corp-STS-Certificates

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM