证书吊销列表 (CRL) 检查
简介
您可以将 StoreFront 配置为使用已发布的证书吊销列表 (CRL) 检查 CVAD Delivery Controller 所使用的 TLS 证书的状态。如果出现以下情况,您可能需要吊销证书访问权限:
- 您认为私钥已被盗用
- CA 被盗用
- 附属关系已更改
- 证书已被取代
注意:
仅当使用 StoreFront 与 Citrix Virtual Apps and Desktops Delivery Controller 之间的 HTTPS 连接时,本主题才相关。与 Delivery Controller 的 HTTP 连接不需要证书,因此此处所述的应用商店的 -CertRevocationPolicy 设置不起作用。
StoreFront 支持使用 CRL 分发点 (CDP) 证书 扩展和本地安装的证书吊销列表 (CRL) 进行 证书吊销检查。StoreFront 仅支持完全 CRL:不支持增量 CLR。
CRL 分发点 (CDP) 扩展
StoreFront 不会枚举 Citrix Virtual Apps and Desktops Delivery Controller 中使用已吊销证书(其序列号在已发布的 CRL 中列出)的资源。要检测哪些证书已被吊销,StoreFront 必须能够使用在 CDP 证书扩展中定义的 URL 之一来访问已发布的 CRL。
CRL 发布间隔
要使 StoreFront 在 Delivery Controller 上更快速地检测已吊销的证书,请缩短 CA 的 CRL 发布间隔。编辑 CLR 分发点扩展程序的属性,以设置适合公钥基础结构的较低 CLR 发布间隔值。
客户端 CRL 缓存
Windows 公钥基础结构客户端在本地缓存 CRL。在本地缓存的 CRL 过期之前,不会下载更新的 CRL。
StoreFront 对证书吊销列表 (CRL) 的访问权限
证书吊销检查取决于 StoreFront 能不能访问 CRL。请仔细考虑 StoreFront 如何联系 Web 服务器或发布 CRL 的证书颁发机构 (CA),以及 StoreFront 如何接收 CRL 更新。
Delivery Controller 上的内部企业 CA 和专用证书
要使用专有 CA 和证书,StoreFront 需要正确配置的企业 CA 和已发布的 CRL,它可以在组织和内部网络中访问这些 CA 和 CRL。有关配置企业 CA 以发布 CDP 扩展程序的信息,请参考 Microsoft 文档。可能需要重新颁发 Delivery Controller 上的所有证书,这些证书在 CA 配置为包含 CDP 扩展程序之前就已经存在。
StoreFront 和 Citrix Virtual Apps and Desktops 服务器通常位于无法访问 Internet 的独立专用网络中。在这种情况下,应使用专用 CA。
Delivery Controller 上的外部公共 CA 和公用证书
StoreFront 服务器和 Citrix Virtual Apps and Desktops Delivery Controller 可以使用公用 CA 颁发的证书。StoreFront 必须能够使用 CDP 扩展程序中引用的 URL 通过 Internet 联系公用 CA 的 Web 服务器。如果在吊销公用证书后,StoreFront 无法使用 CDP URL 下载 CRL 副本,则 StoreFront 无法执行 CRL 检查。
证书吊销策略设置
使用 Citrix StoreFront PowerShell cmdlet Get-STFStoreFarmConfiguration 和 Set-STFStoreFarmConfiguration 为应用商店设置证书吊销策略。运行 Get-Help Set-STFStoreFarmConfiguration -detailed 将显示 PowerShell 帮助和包含 -CertRevocationPolicy 选项的示例。有关这些 StoreFront PowerShell cmdlet 的详细信息信息,请参阅 Citrix StoreFront SDK PowerShell 模块。
-CertRevocationPolicy 选项可以设置为以下值:
设置 | 说明 |
---|---|
NoCheck | StoreFront 不会在 Delivery Controller 上检查证书的吊销状态。StoreFront 仍会枚举使用已吊销证书的 Delivery Controller 中的资源。此为默认设置。 |
MustCheck | 这是最安全的选项。StoreFront 将尝试通过联系在 Delivery Controller 上的证书的 CDP 扩展中引用的 URL 来获取 CRL。如果 CRL 不可用或 Delivery Controller 上正在使用的证书已被吊销,StoreFront 将无法从 Delivery Controller 执行枚举操作。该 URL 可以指向内部 Web 服务器(如果证书是专用的),也可以指向公用 Internet Web 服务器(如果证书由公用 CA 颁发)。 |
FullCheck | StoreFront 将尝试联系 Delivery Controller 证书的 CDP 扩展中发布的 URL。如果 StoreFront 无法从这些 URL 获取 CRL 副本,则它仍然允许枚举 Delivery Controller 中的资源。如果 StoreFront 成功获取 CRL,并且 Delivery Controller 的证书已被吊销,则 StoreFront 不会枚举资源。该 URL 可以指向内部 Web 服务器(如果证书是专用的),也可以指向公用 Internet Web 服务器(如果证书由公用 CA 颁发)。 |
NoNetworkAccess | 仅检查在本地导入到 StoreFront 服务器上的 Citrix Delivery Services 证书存储中的 CRL。StoreFront 不会尝试联系在 CDP 扩展中指定的任何 URL。如果 StoreFront 无法获取 CRL 的本地副本,则它仍然允许枚举 Delivery Controller 中的资源。如果 StoreFront 成功从 Citrix Delivery Services 证书存储中获取 CRL 的本地副本,并且 Delivery Controller 的证书已被吊销,则 StoreFront 不会枚举资源。 |
为证书吊销检查配置存储
要为应用商店设置证书吊销策略,请使用以管理员身份运行打开 PowerShell ISE,然后运行以下 PowerShell cmdlet。如果您有多个应用商店,请对所有应用商店重复此过程。-CertRevocationPolicy 是应用商店级别的设置,它会影响为 $StoreVirtualPath 中指定的应用商店配置的所有 Delivery Controller。
$SiteID = 1
$StoreVirtualPath = "/Citrix/Store"
$StoreObject = Get-STFStoreService -SiteId $SiteID -VirtualPath
$StoreVirtualPath
Set-STFStoreFarmConfiguration -StoreService $StoreObject -CertRevocationPolicy "MustCheck"
<!--NeedCopy-->
要检查是否已正确应用该设置,或查看当前的 -CertRevocationPolicy 配置,请运行以下命令:
(Get-STFStoreFarmConfiguration -StoreService $StoreObject).CertRevocationPolicy
<!--NeedCopy-->
在 StoreFront 服务器上使用本地导入的 CRL
支持使用本地导入的 CRL,但 Citrix 不建议这样做, 因为:
- 它们很难在大型企业部署(可能涉及多个 StoreFront 服务器组)中进行管理和更新。
- 与在整个 Active Directory 域上使用 CDP 扩展程序和发布的 CRL 相比,每次吊销证书时在每个 StoreFront 服务器上手动更新 CRL 更低效。
如果 -CertRevocationPolicy 设置为“NoNetworkAccess”,并且您有办法将 CRL 高效地分发给所有 StoreFront 服务器,则可以使用本地安装的或更新后的 CRL。
使用本地导入的 CLR
-
将 CRL 复制到 StoreFront 服务器的桌面。如果 StoreFront 服务器是某个服务器组的一部分,请将其复制到该组中的所有 StoreFront 服务器中。
-
打开 MMC 管理单元,然后选择文件 > 添加/删除管理单元 > 证书 > 计算机帐户 > Citrix Delivery Services 证书存储。
-
右键单击并选择所有任务 > 导入,然后浏览到 .CRL 文件并选择选择所有文件 > 打开 > 将所有的证书都放入下列存储 > Citrix Delivery Services 中。
通过 PowerShell 或命令行将 CRL 添加到 Citrix Delivery Services 证书存储中
-
登录到 StoreFront 并将 .CRL 文件复制到当前 用户的桌面。
-
打开 PowerShell ISE 并选择以管理员身份运行。
-
运行以下命令:
certutil -addstore "Citrix Delivery Services" "$env:UserProfile\Desktop\Example-DC01-CA.crl"
如果成功,则返回以下内容:
Citrix Delivery Services
CRL "CN=Example-DC01-CA, DC=example, DC=com" added to store.
CertUtil: -addstore command completed successfully.
您可以使用此命令作为示例,通过脚本将 CRL 自动分发到 部署中的所有 StoreFront 服务器。
使用 Delivery Controller 进行 XML 身份验证
您可以配置 StoreFront 以委派 Citrix Virtual Apps and Desktops Delivery Controller 对用户进行身份验证。如果 Delivery Controller 上的证书已被吊销,用户将无法登录到 StoreFront。这种行为是正常的,因为如果 Citrix Virtual Apps and Desktops Delivery Controller(负责对 Active Directory 用户进行身份验证)上的证书已被吊销,Active Directory 用户应该无法登录到 StoreFront。
委托 Delivery Controller 对用户进行身份验证
-
按照上一部分为证书吊销检查配置存储中所述,为存储配置证书吊销。
-
按照基于 XML Service 的身份验证中所述的过程,将 Delivery Controller 配置为使用 HTTPS。
为证书吊销检查配置 XML 身份验证服务
仅当您在部署中使用 XML 身份验证时,才需要执行这些步骤。
注意:
StoreFront 支持两种用于将应用商店映射到身份验证服务的模型。推荐的方法是在应用商店与身份验证服务之间进行一对一映射。在这种情况下,您必须对所有应用商店及其各自的身份验证服务执行此部分中的步骤。
请务必将证书吊销模式设置为与应用商店和身份验证服务所用模式相同的值。或者,如果所有应用商店的身份验证配置都相同,则可以将多个应用商店配置为共享同一个身份验证服务。
身份验证服务 PowerShell cmdlet 没有与 Set-STFStoreFarmConfiguration 等效的命令,因此需要使用稍微不同的 PowerShell 方法。使用之前的部分中介绍的相同证书吊销策略设置。
-
打开 PowerShell ISE 并选择以管理员身份运行。
$SiteID = 1 $StoreVirtualPath = "/Citrix/Store" $AuthVirtualPath = "/Citrix/StoreAuth" <!--NeedCopy-->
-
选择要用于 XML 身份验证的应用商店服务、身份验证服务和 Delivery Controller。确保已为应用商店配置 Delivery Controller。
$StoreObject = Get-STFStoreService -SiteId $SiteID -VirtualPath $StoreVirtualPath $FarmObject = Get-STFStoreFarm -StoreService $StoreObject -FarmName "CVAD" $AuthObject = Get-STFAuthenticationService -SiteID $SiteID -VirtualPath $AuthVirtualPath <!--NeedCopy-->
-
直接修改身份验证服务的 CertRevocationPolicy 属性。
$AuthObject.FarmsConfiguration.CertRevocationPolicy = "FullCheck" $AuthObject.Save() Enable-STFXmlServiceAuthentication -AuthenticationService $AuthObject -Farm $FarmObject <!--NeedCopy-->
-
确认您设置的证书吊销模式正确无误。
$AuthObject = Get-STFAuthenticationService -SiteID 1 -VirtualPath $AuthVirtualPath $AuthObject.FarmsConfiguration.CertRevocationPolicy <!--NeedCopy-->
预期的 Windows 事件查看器错误
启用 CRL 检查时,StoreFront 服务器上的 Windows 事件查看器中会报告错误。
要打开事件查看器,请执行以下操作:
- 在 StoreFront 服务器上,键入运行。
- 键入 eventvwr,然后按 Enter 键。
- 在应用程序和服务中,查找 Citrix Delivery Services 事件。
示例错误:存储无法使用已吊销的证书联系 Delivery Controller
An SSL connection could not be established: An error occurred during SSL crytography: Access is denied.
This message was reported from the Citrix XML Service at address https://deliverycontrollerTLS.domain.com/scripts/wpnbr.dll.
The specified Citrix XML Service could not be contacted and has been temporarily removed from the list of active services.
<!--NeedCopy-->
示例错误:如果用户因 XML 身份验证失败而无法登录,则从 Receiver for Web 中删除
An unexpected response was received during the authentication process.
Citrix.DeliveryServicesClients.Authentication.Exceptions.ExplicitAuthenticationFailure,
Citrix.DeliveryServicesClients.Authentication, Version=3.20.0.0,
Culture=neutral, PublicKeyToken=null
General Authentication Failure
ExplicitResult.State: 5
AuthenticationControllerRequestUrl:
https://storefront.example.com/Citrix/StoreWeb/ExplicitAuth/LoginAttempt
ActionType: LoginAttempt
at
Citrix.Web.AuthControllers.Controllers.ExplicitAuthController.GetExplicitAuthResult(ActionType
type, Dictionary`2 postParams)
<!--NeedCopy-->