你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

验证客户端证书

适用于:所有 API 管理层级

使用 validate-client-certificate 策略强制客户端提供给 API 管理实例的证书与指定的验证规则和声明(例如一个或多个证书标识的使用者或颁发者)相匹配。

要被视为有效,客户端证书必须匹配由顶级元素的属性定义的所有验证规则,并匹配至少一个已定义身份的所有已定义声明。

使用此策略根据所需的属性检查传入的证书属性。 在这些情况下,还可以使用此策略替代客户端证书的默认验证:

  • 如果已上传自定义 CA 证书以验证对托管网关的客户端请求
  • 如果已将自定义证书颁发机构配置为验证对自托管网关的客户端请求

有关自定义 CA 证书和证书颁发机构的详细信息,请参阅如何在 Azure API 管理中添加自定义 CA 证书

注意

按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略

策略语句

<validate-client-certificate 
    validate-revocation="true | false"
    validate-trust="true | false" 
    validate-not-before="true | false" 
    validate-not-after="true | false" 
    ignore-error="true | false">
    <identities>
        <identity
            thumbprint="certificate thumbprint"
            serial-number="certificate serial number"
            common-name="certificate common name"
            subject="certificate subject string"
            dns-name="certificate DNS name"
            issuer-subject="certificate issuer"
            issuer-thumbprint="certificate issuer thumbprint"
            issuer-certificate-id="certificate identifier"/>
    </identities>
</validate-client-certificate> 

属性

客户 说明 需要 默认
validate-revocation 布尔值。 指定是否根据在线吊销列表验证证书。 不允许使用策略表达式。  true
validate-trust 布尔值。 指定在无法成功建立到受信任 CA 的链的情况下验证是否应失败。 不允许使用策略表达式。 true
validate-not-before 布尔值。 根据当前时间验证值。 不允许使用策略表达式。 true
validate-not-after 布尔值。 根据当前时间验证值。 不允许使用策略表达式。 true
ignore-error 布尔值。 指定在验证失败时,策略是继续执行下一个处理程序还是跳转到错误状态。 不允许使用策略表达式。 false

元素

元素 说明 必需
identities 添加此元素以指定一个或多个 identity 元素,其中包含已定义的客户端证书声明。

标识属性

名称 说明 需要 默认
thumbprint 证书指纹。 空值
序列号 证书序列号。 空值
公用名 证书公用名(Subject 字符串的一部分)。 空值
subject Subject 字符串。 必须遵循可分辨名称的格式。 空值
dns-name 使用者可选名称声明中 dnsName 条目的值。 空值
issuer-subject 颁发者的主题。 必须遵循可分辨名称的格式。 空值
issuer-thumbprint 颁发者指纹。 空值
issuer-certificate-id 表示颁发者公钥的现有证书实体标识符。 与其他颁发者属性互相排斥。 空值

使用情况

示例

以下示例验证客户端证书以匹配策略的默认验证规则,并检查使用者和颁发者名称是否匹配指定值。

<validate-client-certificate 
    validate-revocation="true" 
    validate-trust="true" 
    validate-not-before="true" 
    validate-not-after="true" 
    ignore-error="false">
    <identities>
        <identity
            subject="C=US, ST=Illinois, L=Chicago, O=Contoso Corp., CN=*.contoso.com"
            issuer-subject="C=BE, O=FabrikamSign nv-sa, OU=Root CA, CN=FabrikamSign Root CA" />
    </identities>
</validate-client-certificate> 

有关使用策略的详细信息,请参阅: