您正在查看 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 中使用的证书的建议密钥用途和扩展密钥用途
| 目的 |
密钥使用情况
(强制性) |
扩展的密钥用途
(可选) |
| Apigee Edge 虚拟主机的密钥库中使用的服务器实体证书 |
|
TLS Web 服务器身份验证 |
| Apigee Edge 虚拟主机的信任库中使用的客户端实体证书 |
|
TLS Web 客户端身份验证 |
| Apigee Edge 目标服务器信任库中使用的服务器实体证书 |
|
TLS Web 服务器身份验证 |
| Apigee Edge 目标服务器的密钥库中使用的客户端实体证书 |
|
TLS Web 客户端身份验证 |
| 中间证书和根证书 |
|
准备工作
在执行本文档中的步骤之前,请务必了解以下主题:
- 如果您不熟悉证书链,请参阅信任链。
- 如果您不熟悉 OpenSSL 库,请参阅 OpenSSL
- 如果您想详细了解密钥用途扩展和扩展密钥用途,请参阅 RFC5280。
- 如果您想使用本指南中的命令行示例,请安装或更新到最新版本的 OpenSSL 客户端
- 确保证书采用 PEM 格式,否则请 将证书转换为 PEM 格式。
验证证书的用途
本部分介绍了用于验证证书用途的步骤。
- 登录到安装了 OpenSSL 的服务器。
-
如需获取证书的密钥用途,请运行以下 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 -
如果密钥用途是强制性的,则会将其定义为关键用途,如下所示:
openssl x509 -noout -ext keyUsage < intermediate.pem X509v3 Key Usage: critical Certificate Sign, CRL Sign -
运行以下命令,获取证书的扩展密钥用途。
如果扩展密钥用途未定义为关键,则它是一项建议,而不是强制性要求。
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