验证证书用途

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

本文档介绍了如何在将证书上传到密钥库或信任库之前验证证书的用途。该过程依赖 OpenSSL 进行验证,适用于任何提供 OpenSSL 的环境。

TLS 证书通常有一个或多个用途而颁发。通常情况下,这样做是为了限制证书中包含的公钥可用于的操作数量。证书的用途可通过以下证书扩展了解:

  • 密钥用途
  • 扩展的密钥用法

密钥用途

密钥用法扩展项定义了证书中包含的密钥的用途(例如加密、签名或证书签名)。如果公钥用于实体身份验证,则证书扩展应使用数字签名

使用证书授权机构 (CA) 流程创建的 TLS 证书可用的不同密钥用法扩展如下所示:

  • 数字签名
  • 不可否认性
  • 密钥加密
  • 数据加密
  • 密钥协议
  • 证书签名
  • CRL 签名
  • 仅加密
  • 仅解密

如需详细了解这些密钥用法扩展,请参阅 RFC5280,密钥用法

扩展的密钥用途

此扩展程序指明了认证公钥的一种或多种用途,可以作为密钥用法扩展中指出的基本用途的补充或替代。通常,此扩展程序仅出现在最终实体证书中。

一些常见的扩展密钥用法扩展如下:

  • TLS Web server authentication
  • TLS Web client authentication
  • anyExtendedKeyUsage

扩展密钥可以是关键非关键

  • 如果扩展程序是关键的,则只能将证书用于指定的目的。如果证书已用于其他用途,则违反了 CA 的政策。
  • 如果扩展为非关键扩展,则表示密钥的预期用途是参考信息,并不表示 CA 将密钥的使用限制在所示用途。但是,使用证书的应用可能需要指定特定用途,这样证书才会被接受。

如果证书同时包含密钥用法字段和扩展密钥用法字段,这两个字段必须单独处理,并且该证书只能用于同时满足两个密钥用法值的目的。但是,如果没有可以同时满足这两个密钥用法值的用途,则不得将该证书用于任何目的。

购买证书时,请确保已定义正确的密钥用法,以满足客户端或服务器证书的要求,否则 TLS 握手将失败。

用途 密钥用途

(必需)

扩展的密钥用法

(可选)

Apigee Edge 虚拟主机密钥库中使用的服务器实体证书
  • 数字签名
  • 密钥加密或密钥协议
TLS Web 服务器身份验证
Apigee Edge 虚拟主机的信任库中使用的客户端实体证书
  • 数字签名或密钥协议
TLS Web 客户端身份验证
Apigee Edge 目标服务器的 truststore 中使用的服务器实体证书
  • 数字签名
  • 密钥加密或密钥协议
TLS Web 服务器身份验证
Apigee Edge 目标服务器的密钥库中使用的客户端实体证书
  • 数字签名或密钥协议
TLS Web 客户端身份验证
中间证书和根证书
  • 证书签名
  • 证书吊销列表 (CRL) 签名

准备工作

在使用本文档中的步骤之前,请务必了解以下主题:

  • 如果您不熟悉证书链,请参阅信任链
  • 如果您不熟悉 OpenSSL 库,请参阅 OpenSSL
  • 如果您要详细了解密钥用法扩展和扩展密钥用法,请参阅 RFC5280
  • 如果要使用本指南中的命令行示例,请安装或更新到最新版本的 OpenSSL 客户端
  • 确保证书采用 PEM 格式;如果没有,请 将证书转换为 PEM 格式

验证证书的用途

本部分介绍了用于验证证书用途的步骤。

  1. 登录 OpenSSL 所在的服务器。
  2. 如需获取证书的密钥使用情况,请运行以下 OpenSSL 命令:
    openssl x509 -noout -ext keyUsage < certificate
    

    其中 certificate 是证书的名称。

    示例输出

    openssl x509 -noout -ext keyUsage < entity.pem
    X509v3 Key Usage: critical
        Digital Signature, Key Encipherment
    
    openssl x509 -noout -ext keyUsage < intermediate.pem
    X509v3 Key Usage: critical
        Certificate Sign, CRL Sign
    
  3. 如果必须使用某个密钥,就会将其定义为“关键”,如下所示:
    openssl x509 -noout -ext keyUsage < intermediate.pem
    X509v3 Key Usage: critical
        Certificate Sign, CRL Sign
    
  4. 运行以下命令以获取证书的扩展密钥用法。 如果未将扩展密钥的用法定义为“严重”,则只是建议,而不是强制性要求。
    openssl x509 -noout -ext extendedKeyUsage < certificate
    

    其中 certificate 是证书的名称。

    示例输出

    openssl x509 -noout -ext extendedKeyUsage < entity.pem
    X509v3 Extended Key Usage:
        TLS Web Server Authentication, TLS Web Client Authentication
    
    openssl x509 -noout -ext extendedKeyUsage < intermediate.pem
    X509v3 Extended Key Usage:
        TLS Web Server Authentication, TLS Web Client Authentication