Sitecore ECM:无法为SSL / TLS安全通道建立信任关系

时间:2015-02-24 12:13:58

标签: ssl sitecore ssl-certificate sitecore6 sitecore-ecm

每当我尝试在电子邮件营销活动管理器中进行测试连接时,我都会收到以下错误。

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

以下是记录在日志

中的错误
ManagedPoolThread #11 11:41:08 INFO Job started: VerifyMTA
ManagedPoolThread #11 11:41:08 WARN EmailCampaign: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Exception: System.Net.WebException
Message: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Source: System.Web.Services
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Sitecore.Modules.EmailCampaign.AppsService.AppsService.GetServerApplicationsByApplicationId(Credentials credentials, Guid applicationId)
at Sitecore.Modules.EmailCampaign.Core.Services.AppsServiceClient.IsApplicationPurchased(Guid applicationId)
at Sitecore.Modules.EmailCampaign.Core.MessageTransfer.EmailDeliveryClient.IsPurchased()
at Sitecore.Modules.EmailCampaign.Core.MessageTransfer.EmailDeliveryClient.GetSmtpConfiguration()
at Sitecore.Modules.EmailCampaign.SendingManager.GetSmtpSettings()
at Sitecore.Modules.EmailCampaign.Core.MessageTransfer.MtaChecker.GetSmtpSettings(StringBuilder report, String& error)
at Sitecore.Modules.EmailCampaign.Core.MessageTransfer.RemoteMtaChecker.GetSmtpSettings(StringBuilder report, String& error)

Nested Exception

Exception: System.Security.Authentication.AuthenticationException
Message: The remote certificate is invalid according to the validation procedure.
Source: System
at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.TlsStream.CallProcessAuthentication(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)


ManagedPoolThread #11 11:41:08 INFO Job ended: VerifyMTA (units processed: )

我也在Sitecore App Center的“电子邮件发送”选项卡中的“连接测试”选项中收到错误。

端口号25和443在服务器中打开,以联系Sitecore应用程序中心和邮件服务器(默认Sitecore邮件服务器)。我能做到

telnet apps.sitecore.net 443

它工作正常。

我已经尝试退出并重新登录;在some other thread in stackoverflow中建议的Sitecore appcenter中。但我仍然得到这个错误。

任何人都可以建议修复此问题。提前致谢。

3 个答案:

答案 0 :(得分:1)

我们联系了Sitecore,我们得到以下响应以解决问题

  • 重新登录(注销并重新登录)到App Center Sitecore应用程序(使系统更新身份验证信息)

  • 确保Sitecore App Center中的“电子邮件递送”应用旁边有绿色的“正在运行”状态图标(表示已为当前帐户购买了该服务)

  • 验证ECM(电子邮件Campaign Manager)和MTA(邮件传输代理)之间的连接,根据3.1.5中的“ECM 1.3.3管理员和开发人员指南”文档中的建议{ {3}}

  • 如果需要进行其他疑难解答,请将“Sitecore.EmailCampaign.config”文件(位于“/ App_Config / Include”文件夹中)中的“调试”设置设置为“true”。该设置指定是否启用了ECM的Sitecore日志文件中的详细日志记录。

  • 这可能与无效或过期的SSL证书有关,也可能与证书与网站的网址(或基本网址设置)不匹配有关。 请检查这些文章是否可以帮助您:

    http://sdn.sitecore.net/Products/ECM/ECM%201,-d-,3/Documentation.aspx

    Could not establish trust relationship for SSL/TLS secure channel -- SOAP

  • 请检查GlobalSettings.RendererUrl设置的值是否等于您当前的站点主机名。您可以在布局中使用以下代码:

    
        protected override void OnLoad(EventArgs e)
        {
    Response.Write("GlobalSettings.RendererUrl: "+Sitecore.Modules.EmailCampaign.GlobalSettings.RendererUrl); base.OnLoad(e); }

  • 此外,请检查您的网站是否允许匿名访问,否则防火墙不会阻止ECM请求。

临时修复
作为临时修复,您可以添加一个回调委托,每当Sitecore尝试验证远程服务器证书时,该委托始终返回true。您可以通过在网站文件夹中添加由Sitecore提供的Global.asax文件中的函数来执行此操作,如http://www.outsystems.com/NetworkForums/ViewTopic.aspx?Topic=Web-Services:-Could-not-establish-trust-relationship-for-the-SSL/TLS所述。如果这解决了问题,那么它确认它是服务器证书问题。这可能会导致一些安全问题,因此不要将其用作永久解决方案。

答案 1 :(得分:0)

答案 2 :(得分:0)

您的应用程序池是否作为网络服务运行?当IIS工作进程无法访问SSL / TSL协商中使用的证书时,我看到了这个错误。