2014-09-09 8 views
14

का उपयोग करते समय मेरे पास Azure में कई वेबसाइटें चल रही हैं, जो सर्विसबस (एज़ूर में भी होस्ट की गई) का उपयोग कर गहन रूप से चल रही हैं, सभी एक क्षेत्र मेंआवधिक सेवाबस त्रुटि "एक्स.50 9 प्रमाणपत्र सीएन = servicebus.windows.net भरोसेमंद लोगों की दुकान में नहीं है" Azure WebSites

कभी कभी (एक बार हर 2-3 दिन) मैं (पढ़ने के दौरान/संदेश के लिए प्रतीक्षा में) एक ही समय में सभी वेब साइटों में एक ही त्रुटि है:

Microsoft.ServiceBus.Messaging.MessagingCommunicationException: 
The X.509 certificate CN=servicebus.windows.net is not in the trusted people store. 
    The X.509 certificate CN=servicebus.windows.net chain building failed. 
    The certificate that was used has a trust chain that cannot be verified. 
    Replace the certificate or change the certificateValidationMode. 
    A certificate chain could not be built to a trusted root authority. 

पूर्ण स्टैकट्रेस: ​​

Microsoft.ServiceBus.Messaging.MessagingCommunicationException: The X.509 certificate CN=servicebus.windows.net is not in the trusted people store. The X.509 certificate CN=servicebus.windows.net chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. A certificate chain could not be built to a trusted root authority. 
---> System.ServiceModel.Security.SecurityNegotiationException: The X.509 certificate CN=servicebus.windows.net is not in the trusted people store. The X.509 certificate CN=servicebus.windows.net chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. A certificate chain could not be built to a trusted root authority. 
---> System.IdentityModel.Tokens.SecurityTokenValidationException: The X.509 certificate CN=servicebus.windows.net is not in the trusted people store. The X.509 certificate CN=servicebus.windows.net chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode. A certificate chain could not be built to a trusted root authority. 

    at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 
    at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 
    at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 
    at System.ServiceModel.Channels.SslStreamSecurityUpgradeInitiator.InitiateUpgradeAsyncResult.OnCompleteAuthenticateAsClient(IAsyncResult result) 
    --- End of inner exception stack trace --- 

Server stack trace: 
    at Microsoft.ServiceBus.Messaging.Channels.SharedChannel`1.CreateChannelAsyncResult.<GetAsyncSteps>d__7.MoveNext() 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.EnumerateSteps(CurrentThreadType state) 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
    at Microsoft.ServiceBus.Common.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result) 

Exception rethrown at [0]: 
    at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
    at Microsoft.ServiceBus.Messaging.Channels.SharedChannel`1.OnEndCreateInstance(IAsyncResult asyncResult) 
    at Microsoft.ServiceBus.Messaging.SingletonManager`1.EndGetInstance(IAsyncResult asyncResult) 
    at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<GetAsyncSteps>b__2(RequestAsyncResult thisPtr, IAsyncResult r) 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 

Exception rethrown at [1]: 
    at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
    at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result) 
    at Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.RequestAsyncResult.<>c__DisplayClass17.<GetAsyncSteps>b__a(RequestAsyncResult thisPtr, IAsyncResult r) 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 

Exception rethrown at [2]: 
    at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
    at Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.EndRequest(IAsyncResult result) 
    at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<GetAsyncSteps>b__4(RequestAsyncResult thisPtr, IAsyncResult r) 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 

Exception rethrown at [3]: 
    at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
    at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result) 
    at Microsoft.ServiceBus.Messaging.Sbmp.CloseOrAbortLinkAsyncResult.<GetAsyncSteps>b__7(CloseOrAbortLinkAsyncResult thisPtr, IAsyncResult a) 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 

Exception rethrown at [4]: 
    at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageReceiver.AbandonPrefetchedMessagesCloseAbortAsyncResult.<GetAsyncSteps>b__41(AbandonPrefetchedMessagesCloseAbortAsyncResult thisPtr, IAsyncResult r) 
    at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 

Exception rethrown at [5]: 
    at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageReceiver.OnEndClose(IAsyncResult result) 
    --- End of inner exception stack trace --- 
    at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageReceiver.OnEndClose(IAsyncResult result) 
    at Microsoft.ServiceBus.Messaging.ClientEntity.OnClose(TimeSpan timeout) 
    at Microsoft.ServiceBus.Messaging.ClientEntity.Close(TimeSpan timeout) 
    at Olekstra.Common.QueueReader.<>c__DisplayClass3.<StartTask>b__2(Boolean force) 

मैं Microsoft.ServiceBus.dll NuGet पैकेज (2.4.0.0) का अप-टू-डेट संस्करण का उपयोग कर रहा हूं, इसलिए Google से प्रमाणपत्र "सर्विसबस 1.8 में डिफ़ॉल्ट रूप से प्रमाणपत्र प्रमाणीकरण बंद है" बेकार हैं - मैंने कोई सत्यापन चालू नहीं किया है, और इसके अलावा - यह एक पंक्ति में कई घंटे काम करता है और हर 2-3 दिनों में केवल एक बार विफल रहता है।

इसी तरह के answer स्वयं-होस्ट किए गए एप्लिकेशन के बारे में भी उपयुक्त नहीं हैं - वेबसाइट एज़ूर के अंदर चल रही है, वीएम की मेजबानी एमएस कर्मचारियों द्वारा प्रबंधित की जाती है, मुझे किसी रूट प्रमाणपत्र को अपडेट करने की अनुमति नहीं है।

क्या कोई जानता है कि सर्विसबस क्लाइंट कभी-कभी एसएसएल प्रमाण जांचने का फैसला करता है और इस व्यवहार को कैसे अक्षम कर सकता है?

युपीडी:

मैं web.config दो हफ्ते पहले में appSettings में <add key="Microsoft.ServiceBus.X509RevocationMode" value="NoCheck"/> जोड़ा - कोई फर्क नहीं।

इसके अलावा परावर्तक पता चलता है कि 'NoCheck' मूल्य Microsoft.ServiceBus.Configuration.ConfigurationHelpers.GetCertificateRevocationMode()

+1

आप कभी भी इस मुद्दे के साथ कहीं भी मिली थी? – Ian1971

उत्तर

5

कनेक्टिविटी मोड में एक परिवर्तन में डिफ़ॉल्ट आपकी समस्या का समाधान कर सकता है।

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https 

यह सामान्य रूप से ConnectivityMode.AutoDetect

है एमएस समर्थन में एक स्रोत

"यह एक WebSockets सुरंग कि है एक पहले TLS द्वारा सुरक्षित उपयोग करने के लिए सभी यातायात के लिए बाध्य करेगा के अनुसार/एचटीटीपीएस हैंडशेक, और उस हैंडशेक में आवश्यक इंटरमीडिएट सर्टिफिकेट है। मैसेजिंग प्रोटोकॉल उस सुरंग के माध्यम से का उपयोग करता है, फिर भी एएमक्यूपी या नेटमेसेगी एनजी, तो आपको इस विकल्प को चुनते समय HTTP विशेषताओं को प्राप्त करने के लिए चिंतित नहीं होना चाहिए। "

तो मैं समझ है कि प्रमाण पत्र केवल इस परिदृश्य में एक बार दिलवाया जाएगा, और है कि उस बिंदु पर एक अतिरिक्त विलंबता परिचय हो सकता है, और फिर इसे हमेशा के लिए के बाद किया जाता है। ऐसा लगता है कि आपका अपवाद प्राप्त करने का जोखिम काफी कम हो गया है।

1

एक और दृष्टिकोण है कि इस समस्या का समाधान होगा, लेकिन सुरक्षा प्रभाव पड़ता है: https://stackoverflow.com/a/39415887/5869

+0

दुर्भाग्य से नहीं। मैं "भरोसेमंद" प्रमाणपत्रों की सूची नहीं बना सकता क्योंकि सभी प्रमाणपत्र एमएस/एज़ूर द्वारा प्रबंधित किए जाते हैं और अधिसूचना के बिना बदल जाते/घुमाए जाते हैं। – Dmitry

संबंधित मुद्दे