<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
本文档介绍了如何在将证书上传到 密钥存储区或信任库该流程依赖于 使用 OpenSSL 工具包验证证书 链,适用于任何提供 OpenSSL 的环境。
准备工作
在使用本文档中的步骤之前,请确保您了解以下主题:
- 如果您不熟悉证书链,请参阅 信任链。
- 如果您对 OpenSSL 库不熟悉,请参阅 OpenSSL。
- 如果您想使用本指南中的命令行示例,请安装或更新到 最新版本的 OpenSSL 客户端。
- 确保证书采用 PEM 格式。如果证书未采用 PEM 格式 请按照 <ph type="x-smartling-placeholder"></ph> 将证书转换为支持的格式,以将其转换为 PEM 格式。
验证整个证书链的证书主题和颁发者
要使用 OpenSSL 命令验证证书链,请完成 以下部分:
拆分证书链
在验证证书之前,您需要将证书链拆分为单独的 申请证书:
- 登录存在 OpenSSL 客户端的服务器。
- 将证书链拆分为以下证书(如果尚未拆分):
-
实体证书:
entity.pem
-
中间证书:
intermediate.pem
-
根证书:
root.pem
下图显示了一个证书链示例:
验证证书主题和颁发者
本部分介绍了如何获取证书的主题和颁发者,并验证 您具有有效的证书链。
-
运行以下 OpenSSL 命令以获取
Subject
和 为来自entity
的链中的每个证书创建Issuer
root
并验证它们是否形成了适当的证书链:openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
其中,certificate 是证书的名称。
-
验证证书链中的证书是否遵循以下准则:
<ph type="x-smartling-placeholder">
- </ph>
-
Subject
每个证书的Issuer
链中的上一个证书(Entity
证书除外)。 -
对于根证书,
Subject
和Issuer
相同。
如果证书链中的证书符合这些准则,我们就会认为该证书链完整且有效。
证书链验证示例
以下示例是包含三个证书的示例证书链的 OpenSSL 命令输出:
实体证书
openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):' Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1 Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
中间证书
openssl x509 -text -in intermediate.pem | grep -E '(Subject|Issuer):' Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
根证书
openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):' Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
在上述示例中,请注意以下事项:
-
中间证书的
Subject
与Issuer
匹配 该实体证书的签名。 -
根证书的
Subject
与以下证书的Issuer
相匹配: 中间证书 -
Subject
和Issuer
在根证书中相同。
在上面的示例中,您可以确认示例证书链有效。
-
验证证书主题和颁发者哈希
本部分介绍了如何获取证书的主题和颁发者的哈希值,以及 验证您是否有有效的证书链。
最好是验证证书的哈希序列 识别问题,例如证书的公用名 (CN) 包含多余的空间,或 特殊字符。
- 运行以下 OpenSSL 命令以获取每个命令的
hash
序列 从entity
到root
的链中的证书,并验证它们是否 形成适当的证书链 - 验证证书链中的证书是否遵循以下准则:
-
每个证书的“
Subject
”与上述“Issuer
”匹配 证书链中的证书(Entity
证书除外)。 -
对于根证书,
Subject
和Issuer
相同。 -
中间证书的
subject hash
与实体的issuer hash
匹配 证书。 -
根证书的
subject hash
与颁发者证书的issuer hash
匹配。 -
subject
和issuer hash
在根证书中相同。
openssl x509 -hash -issuer_hash -noout -in certificate
其中,certificate 是证书的名称。
如果证书链中的证书符合这些准则, 视为完整有效。
通过哈希序列验证证书链的示例
以下示例是示例证书链的 OpenSSL 命令输出 包含以下三个证书:
openssl x509 -in entity.pem -hash -issuer_hash -noout c54c66ba #this is subject hash 99bdd351 #this is issuer hash
openssl x509 -in intermediate.pem -hash -issuer_hash -noout 99bdd351 4a6481c9
openssl x509 -in root.pem -hash -issuer_hash -noout 4a6481c9 4a6481c9
在上述示例中,请注意以下事项:
在上面的示例中,您可以确认示例证书链有效。
验证证书有效期
本部分介绍了如何验证链中的所有证书是否均 过期日期:
- 获取证书的开始日期和结束日期。
- 获取过期状态。
开始日期和结束日期
运行以下 OpenSSL 命令以获取每个证书的开始日期和结束日期
从 entity
到 root
的链中,并验证所有证书是否
链均有效(开始日期早于今天),且未过期。
从开始日期和结束日期到证书失效日期的验证示例
openssl x509 -startdate -enddate -noout -in entity.pem notBefore=Feb 6 21:57:21 2020 GMT notAfter=Feb 4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem notBefore=Jun 15 00:00:42 2017 GMT notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem notBefore=Apr 13 10:00:00 2011 GMT notAfter=Apr 13 10:00:00 2022 GMT
到期状态
运行以下 OpenSSL 命令以检查证书是否已经过期,或者
将于下一个 N seconds
后过期。这会返回
当前系统日期上下文中的证书。
openssl x509 -checkend <N Seconds> -noout -in certificate
其中,certificate 是证书的名称。
通过 checkend 选项验证证书失效日期的示例
以下命令使用 0 seconds
检查证书是否已读取
已过期或未过期:
openssl x509 -checkend 0 -noout -in entity.pem Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem Certificate will not expire
在此示例中,消息 Certificate will not expire
表示
证书尚未过期。