症状
请考虑以下情况:
-
在 Exchange Server 环境中,Outlook Web App 或 Exchange 控制面板 (ECP) 网站配置为使用基于表单的身份验证 (FBA) 。
-
用户输入有效的邮箱用户名和密码。
当用户在此方案中Outlook Web App或 ECP 时,将重定向到 FBA 页面。 没有错误消息。
此外,在 HttpProxy\Owa 日志中,"/owa"的条目显示"CorrelationID=<空>;已针对失败的请求返回 NoCookies=302"。 在日志的前面,"/owa/auth.owa"的条目指示用户已成功进行身份验证。
原因
如果网站由证书保护,而该证书使用密钥 存储 提供程序 (KSP) 通过加密下一代 CNG (KSP) 来存储其私钥) 。
Exchange Server CNG/KSP 证书来保护 Outlook Web App ECP。 必须改为使用 (CSP) 提供程序。 可以从托管受影响网站的服务器确定私钥是否存储在 KSP 中。 如果证书文件包含 pfx、p12 (私钥,也可以验证) 。
如何使用 CertUtil 确定私钥存储
如果证书已安装在服务器上,请运行以下命令:
certutil -store my <CertificateSerialNumber>如果证书存储在 pfx/p12 文件中,请运行以下命令:
certutil <CertificateFileName>在任一情况下,有关证书的输出都显示以下内容:
提供程序 = Microsoft 存储密钥提供程序
解决方法
若要解决此问题,请将证书迁移到 CSP,或者从证书提供程序请求 CSP 证书。
注意 如果使用来自其他软件或硬件供应商的 CSP 或 KSP,请联系相关供应商,获得相应说明。 例如,如果使用 Microsoft RSA SChannel 加密提供程序,并且证书未锁定到 KSP 中,则应该这样做。
-
备份现有证书,包括私钥。 若要详细了解如何执行此操作,请参阅 Export-ExchangeCertificate。
-
运行 Get-ExchangeCertificate 命令,确定哪些服务当前绑定到证书。
-
运行以下命令,将新证书导入 CSP:
certutil -csp "Microsoft RSA SChannel 加密提供程序" -importpfx <CertificateFilename> -
运行Get-ExchangeCertificate,确保证书仍绑定到同一服务。
-
重启服务器。
-
运行以下命令,验证证书现在是否具有与 CSP 一起存储的私钥:
certutil -store my <CertificateSerialNumber>
输出现在应显示以下内容:
提供程序 = Microsoft RSA SChannel 加密提供程序