适用于:所有 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 | 
元素
| 元素 | 说明 | 需要 | 
|---|---|---|
| 身份 | 添加此元素,以在客户端证书上指定最多 10 个 identity个子元素,其中包含定义的声明。 | 否 | 
标识属性
| 客户 | 说明 | 需要 | 默认 | 
|---|---|---|---|
| 指纹 | 证书 SHA-1 指纹。 | 否 | 空值 | 
| 序列号 | 证书序列号。 | 否 | 空值 | 
| 公用名 | 证书公用名(Subject 字符串的一部分)。 | 否 | 空值 | 
| 主题 | Subject 字符串。 必须遵循可分辨名称的格式,它由逗号分隔的名称属性组成,例如,“CN=MyName, OU=MyOrgUnit, C=US...”。 | 否 | 空值 | 
| dns-name | 使用者可选名称声明中 dnsName 条目的值。 | 否 | 空值 | 
| issuer-subject | 颁发者的主题。 必须遵循可分辨名称的格式。 | 否 | 空值 | 
| issuer-thumbprint | 颁发者 SHA-1 指纹。 | 否 | 空值 | 
| 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, Inc.", CN=*.contoso.com"
            issuer-subject="C=BE, O=FabrikamSign nv-sa, OU=Root CA, CN=FabrikamSign Root CA" />
    </identities>
</validate-client-certificate> 
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例