首页 > 解决方案 > ADFS - 无法设置 SSL 证书

问题描述

我正在尝试创建一个测试 ADFS 环境,但 ADFS 配置一直失败。打开详细日志记录后,我可以看到 SSL 证书存在问题。证书已导出私钥。事件错误如下: Event Id: 12 关键字:ADFSConfiguration

我尝试使用 PowerShell 设置 adfs 证书,但出现以下错误”

PS C:\Users\user> Set-AdfsSslCertificate -Thumbprint 'thumbprint' Set-AdfsSslCertificate : 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信,因为它处于故障状态。在行:1 字符:1

请帮忙。

谢谢!

标签: sslssl-certificateadfs

解决方案


我遇到了同样的问题,我花了一段时间才弄清楚如何创建新证书。答案很简单。

首先,您需要将域控制器的日期设置为证书仍然有效的日期。为此,您需要停止服务“w32time”,否则您无法在域控制器上设置日期。您可以在此处找到更多信息。

以管理员身份打开 cmd 并输入以下命令:

net stop w32time

现在打开您的日期和时间设置,并将日期设置为证书仍然有效的日期。

现在启动 AD FS 服务。它应该毫无问题地开始。可以肯定的是,我建议在执行下一步之前等待几分钟。

再次启动“w32time”服务,以便域控制器再次获得正确的时间。您会看到 AD FS-Service 仍在运行。

net start w32time

必须等到系统再次找到正确的时间,否则证书将在过去创建。

以管理员身份打开 Powershell 并键入以下命令:

Set-ADFSProperties -CertificateDuration 1095

这将新生成的证书的有效期设置为 3 年。(这不是必需的,但在这种情况下可能会有所帮助 - 默认值为 365 天)您可以选择使用以下命令设置证书生成阈值:

Set-ADFSProperties -CertificateGenerationThreshold 30

这将使证书在旧证书到期前 30 天自动更新。

使用以下命令,您可以设置证书升级阈值:

Set-ADFSProperties -CertificatePromotionThreshold 25

通常新生成的证书将被创建为“次要”证书。使用此命令,它们将在 25 天后升级为“主要”证书,并将按原样使用。

另一个可选设置是证书关键阈值设置,如果 AD FS 服务由于某些恶意原因无法创建或提升新证书,则会启动该设置。以下命令将在旧证书到期前的天数内执行此操作。默认值为 2 天,这完全没问题。

Set-ADFSProperties -CertificateCriticalThreshold 2

最后但并非最不重要的一点是激活证书的自动翻转,因此问题基本上不会再出现,并且证书会自动更新。

Set-ADFSProperties -AutoCertificateRollover $true

现在在 Powershell 中使用以下命令更新证书。

Update-ADFSCertificate -Urgent

您可以在以下网站上找到有关此程序的更多信息。

现在打开您的 ADFS 管理器并转到“服务 -> 证书”。在那里你会找到所有 3 个证书。如果其中之一为空、过期或丢失,您可以在正确的站点上的操作下设置新的。将所有 3 个证书设置为新证书后,重新启动您的 adfs 服务。如果它恢复正常,请重新启动您的服务器。

当您的系统启动时,该服务应该立即启动。

现在您可以测试您的 AD FS 服务是否正常工作。我不确定这是否是解决此问题的正确方法,但我可以保证这为我解决了问题。

如果某些应用程序不起作用,请检查他们是否需要了解证书更改。(例如 GitLab)在某些情况下,浏览器缓存也可能是一个问题,因此您需要清除它。甚至某些应用程序的缓存也可能带有错误的证书,因此可能需要重新启动应用程序(两种缓存方案都不应该是这种情况,但它们可能是)。


推荐阅读