Network Management

UDT plugin error - The service certificate is not provided

This article goes over an issue that can occur when the UDT plugin will fail to load due to an error in the UDT.BusinessLayer.log

First published date

10/15/2018 7:33 PM

Last published date

4/15/2019 3:18 PM

Overview

This article describes the resolution for an issue where the UDT plugin fails to load due to the following error in the UDT.BusinessLayer.log:
 
2016-03-09 14:46:17,020 [Main] FATAL - Unhandled Exception caught in plugin startup. [SolarWinds.UDT.BusinessLayer.UDTBusinessLayerPlugin]
System.InvalidOperationException: The service certificate is not provided. Specify a service certificate in ServiceCredentials. 
   at System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateServerX509TokenProvider()
   at System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateLocalSecurityTokenProvider(RecipientServiceModelSecurityTokenRequirement recipientRequirement)
   at System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement requirement)
   at System.ServiceModel.Channels.SslStreamSecurityUpgradeProvider.CreateServerProvider(SslStreamSecurityBindingElement bindingElement, BindingContext context)
   at System.ServiceModel.Channels.ConnectionOrientedTransportChannelListener..ctor(ConnectionOrientedTransportBindingElement bindingElement, BindingContext context)
   at System.ServiceModel.Channels.TcpChannelListener..ctor(TcpTransportBindingElement bindingElement, BindingContext context)
   at System.ServiceModel.Channels.TcpTransportBindingElement.BuildChannelListener[TChannel](BindingContext context)
   at System.ServiceModel.Channels.SessionChannelDemuxer`2..ctor(BindingContext context, TimeSpan peekTimeout, Int32 maxPendingSessions)
   at System.ServiceModel.Channels.ChannelDemuxer.CreateTypedDemuxer(Type channelType, BindingContext context)
   at System.ServiceModel.Channels.ChannelDemuxer.GetTypedDemuxer(Type channelType, BindingContext context)
   at System.ServiceModel.Channels.ChannelDemuxer.BuildChannelListener[TChannel](BindingContext context, ChannelDemuxerFilter filter)
   at System.ServiceModel.Channels.ChannelBuilder.BuildChannelListener[TChannel]()
   at System.ServiceModel.Channels.ChannelBuilder.BuildChannelListener[TChannel](MessageFilter filter, Int32 priority)
   at System.ServiceModel.Channels.SecurityChannelListener`1.InitializeListener(ChannelBuilder channelBuilder)
   at System.ServiceModel.Channels.TransportSecurityBindingElement.BuildChannelListenerCore[TChannel](BindingContext context)
   at System.ServiceModel.Channels.Binding.BuildChannelListener[TChannel](Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters)
   at System.ServiceModel.Description.DispatcherBuilder.MaybeCreateListener(Boolean actuallyCreate, Type[] supportedChannels, Binding binding, BindingParameterCollection parameters, Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, ServiceThrottle throttle, IChannelListener& result, Boolean supportContextSession)
   at System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(StuffPerListenUriInfo stuff, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, Boolean supportContextSession, IChannelListener& result)
   at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost)
   at System.ServiceModel.ServiceHostBase.InitializeRuntime()
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at SolarWinds.UDT.BusinessLayer.UDTBusinessLayerPlugin.OpenBusinessLayerService()
   at SolarWinds.UDT.BusinessLayer.UDTBusinessLayerPlugin.Start()

Product section

User Device Tracker

Cause

The error occurs because the businesslayer cannot validate the SolarWinds-Orion certificate in the server. The reason for this is due to the UDT plugin loading as its own process and as a 64bit process. For UDT, this is currently not supported and results in an error state. SolarWinds recommends to leave the default 32bit to ensure there are no issues.

Resolution

  1. Stop all Orion Services using the Orion Service Manager.
  2. Go to the install directory at Program Files (x86)\Solarwinds\Orion\UDT.
  3. Locate the file SolarWinds.UDT.BusinessLayer.dll.config and open in any text editor.
  4. Locate the line:
    <SolarWinds.BusinessLayerHost LoadPlugins="true" SeparateProcess="true" Support64="true" />
  5. Change it to this:
    <SolarWinds.BusinessLayerHost LoadPlugins="true" SeparateProcess="true" />
  6. Save the file.
  7. Restart all Orion Services using the Orion Service Manager.