症状
安装并升级到 Microsoft Exchange Server 2016 累积更新 6 (CU6) 后,无法访问 Outlook Web App (OWA) 或 Exchange 控制面板 (ECP) ,并收到以下错误消息:
注意
:- ( 出错
我们现在无法获取该信息。 请稍后重试。
X-ClientId: ClientID
X-FEServer:Exch1
此外,以下事件信息将记录在托管邮箱数据库的 Exchange 服务器的应用程序日志中:
注意
日志名称:应用程序
源:MSExchange OAuth
事件 ID:2004
任务类别:配置
级别:警告
关键字:经典
用户:不适用
计算机: mail.contoso.com
说明:
在当前计算机中找不到具有指纹 CertificateValue 的证书,或者证书缺少私钥。 需要证书才能对传出令牌进行签名。
注意
- 日志名称:应用程序
来源:ASP.NET 4.0.30319.0
事件 ID:1309
任务类别:Web 事件
级别:警告
关键字:经典
用户:不适用
说明:
事件代码:3005
事件消息:发生了未经处理的异常。
事件 ID: EventID
事件序列:2
事件发生次数:1
事件详细信息代码:0
应用程序信息:
应用程序域:/LM/W3SVC/2/ROOT/owa-2-DomainID
信任级别:完全
应用程序虚拟路径:/owa
应用程序路径:C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\owa\
计算机名称:Exch1
进程信息:
进程 ID:21508
进程名称:w3wp.exe
帐户名称:NT AUTHORITY\SYSTEM
异常信息:
异常类型:TargetInvocationException
异常消息:调用的目标已引发异常。
at System.RuntimeMethodHandle.InvokeMethod (Object target、Object[] arguments、Signature sig、Boolean 构造函数)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (Object obj、Object[] parameters、Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke (Object obj、BindingFlags invokeAttr、Binder binder、Object[] 参数、CultureInfo 区域性)
at Owin.Loader.DefaultLoader。<>c__DisplayClass12。<MakeDelegate>b__b (IAppBuilder builder)
at Owin.Loader.DefaultLoader。<>c__DisplayClass1。<LoadImplementation>b__0 (IAppBuilder 生成器)
at Microsoft.Owin.Host.SystemWeb.OwinAppContext.Initialize (Action'1 启动)
at Microsoft.Owin.Host.SystemWeb.OwinBuilder.Build (Action'1 启动)
at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint ()
at System.Threading.LazyInitializer.EnsureInitializedCore[T] (T& target,boolean& initialized,Object& syncLock,Func'1 valueFactory)
at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init (httpApplication 上下文)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext、HttpContext context、MethodInfo[] 处理程序)
at System.Web.HttpApplication.InitSpecial (HttpApplicationState 状态、MethodInfo[] 处理程序、IntPtr appContext、HttpContext 上下文)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext、 HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) - 缺少加密证书
at Microsoft.Exchange.Security.Authentication.Utility.GetCertificates ()
at Microsoft.Exchange.Clients.Owa2.Server.Core.notifications.SignalR.SignalRStartup.Configuration (IAppBuilder 应用)
请求信息:
请求 URL:https:// mail.contoso.com:URLID/owa/?bO=1
请求路径:/owa/
用户主机地址:UserHostAddressC:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\owa\
用户:
已进行身份验证:False
身份验证类型:
线程帐户名称:NT AUTHORITY\SYSTEM
线程信息:
线程 ID:24
线程帐户名称:NT AUTHORITY\SYSTEM
正在模拟: False
堆栈跟踪:位于 System.RuntimeMethodHandle.InvokeMethod (Object target、Object[] 参数、Signature sig、布尔构造函数)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (Object obj、Object[] parameters、Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke (Object obj、BindingFlags invokeAttr、Binder binder、Object[] 参数、CultureInfo 区域性)
at Owin.Loader.DefaultLoader。<>c__DisplayClass12。<MakeDelegate>b__b (IAppBuilder builder)
at Owin.Loader.DefaultLoader。<>c__DisplayClass1。<LoadImplementation>b__0 (IAppBuilder 生成器)
at Microsoft.Owin.Host.SystemWeb.OwinAppContext.Initialize (Action'1 启动)
at Microsoft.Owin.Host.SystemWeb.OwinBuilder.Build (Action'1 启动)
at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint ()
at System.Threading.LazyInitializer.EnsureInitializedCore[T] (T& target,boolean& initialized,Object& syncLock,Func'1 valueFactory)
at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init (httpApplication 上下文)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext、HttpContext context、MethodInfo[] 处理程序)
at System.Web.HttpApplication.InitSpecial (HttpApplicationState 状态、MethodInfo[] 处理程序、IntPtr appContext、HttpContext 上下文)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext、 HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext)
原因
如果 Exchange 服务器中缺少用于 OAuth 签名的 Exchange 服务器身份验证证书,则会出现此问题。 可以运行以下命令来检查证书是否缺失:
Get-ExchangeCertificate (Get-AuthConfig) 。CurrentCertificateThumbprint
如果缺少证书,将收到以下错误消息:
注意
服务器 Exch1 上出现特殊的 Rpc 错误:找不到具有指纹 CertificateValue 的证书 。
+ CategoryInfo: NotSpecified: (:) [Get-ExchangeCertificate], InvalidOperationException
+ FullyQualifiedErrorId : [Server=Exch1,RequestId=RequestID] [FailureCategory=Cmdlet-InvalidOperationException] CEA009BC,Microsoft.Exchange.Management.SystemConfigurationTasks.GetExchangeCertificate
解决方法
若要解决此问题,请安装适用于 Exchange Server 2016 的累积更新 7 或适用于 Exchange Server 2016 的更高版本的累积更新。
解决方法
如果组织有多个 Exchange 服务器,请在 Exchange 命令行管理程序中运行以下命令,以确认其他 Exchange 服务器上是否存在 OAuth 证书:
Get-ExchangeCertificate (Get-AuthConfig) 。CurrentCertificateThumbprint
如果证书存在于其他 Exchange 服务器上, 请导出证书, 然后将其 导入到有问题的 Exchange 服务器 。
如果组织中的所有 Exchange 服务器上都没有证书,请按照以下步骤创建一个新的 OAuth 证书并将其部署到 Exchange 服务器:
- 通过运行以下命令创建新的 OAuth 证书:
New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName “cn=Microsoft Exchange Server Auth Certificate” -FriendlyName “Microsoft Exchange Server身份验证证书” -DomainName “contoso.com”
注意 将示例中 DomainName 参数的值 (contoso.com) 更改为组织中使用的 SMTP 域。 - 通过运行以下命令,将创建的证书设置为用于服务器身份验证:
Set-AuthConfig -NewCertificateThumbprint <ThumbprintFromStep1> -NewCertificateEffectiveDate (Get-Date)
Set-AuthConfig – PublishCertificate
Set-AuthConfig -ClearPreviousCertificate - 重启 Microsoft Exchange 服务主机服务。
- 运行 IISReset 命令以重启 IIS,或者在提升的模式下 (运行以下命令,) 回收 OWA 和 ECP 应用池:
Restart-WebAppPool MSExchangeOWAAppPool
Restart-WebAppPool MSExchangeECPAppPool
注意 在某些环境中,可能需要一个小时才能发布 OAuth 证书。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。