更新时间:2026-07-01 GMT+08:00
分享

获取OIDC身份提供商的指纹

当您在IAM中创建OIDC身份提供商时,IAM需要获取外部身份提供商(IdP)JWKS端点的顶级中间CA证书的指纹。指纹是指该CA证书的签名,当您创建IAM OIDC身份提供商时,表示您信任对应外部身份提供商验证的身份,并允许它访问您的华为云账号。IAM使用CA证书的指纹,这样您便可以信任由该CA签发的、且具有与JWKS域名相同的任何终端实体证书。CA证书的有效期一般比较长,在CA证书有效期内,可以允许您经常轮转外部身份提供商的终端实体证书,而无需在IAM中更新身份提供商的信任关系。

当您在IAM控制台中创建OIDC身份提供商时,IAM会自动获取顶级中间CA证书指纹。而您通过API创建OIDC身份提供商时,您可以选择手动提供指纹,如果您没有手动提供指纹,那么IAM同样也会自动获取顶级中间CA证书指纹。此外,建议您每次都手动获取外部身份提供商的指纹,并检查IAM自动获取到的指纹是否正确。
  1. IAM使用其受信任的根证书颁发机构(CA)库来保护与OIDC身份提供商之间的通信,并通过这些CA验证JSON Web Key Set(JWKS)端点的TLS证书。如果你的OIDC身份提供商使用的证书不是由这些受信任的CA之一签发的,那么我们将使用你在身份提供商配置中设置的指纹(thumbprint)来保障通信安全。
  2. IAM自动获取指纹时,默认是取JWKS端点证书链中的最后一本证书进行计算的。一般来说,JWKS端点的证书链的最后一本证书便是顶级中间CA证书,不过这取决于外部OIDC身份提供商的具体实现。在一些特殊场景中,例如:证书链中只有一本终端实体证书、或者证书链最后一本为根CA证书,那么最后得到的指纹分别便是这一本终端实体证书和根CA证书的。

操作步骤

如果您获得的指纹与您在IAM OIDC身份提供商详细信息中看到的指纹不匹配,则不应使用该OIDC提供商。此时,您应该删除在IAM中已经创建OIDC提供商,等待一段时间后再次尝试创建OIDC提供商,如果第二次尝试后指纹仍然不匹配,你可以提交工单联系IAM。

  1. 您需要自行安装OpenSSL工具,然后才能获取OIDC身份提供商的指纹。您可使用安装好的OpenSSL下载OIDC身份提供商的证书链并生成证书链中最后一本证书的指纹。注意:IAM不提供OpenSSL工具的安装教程,请自行在网上搜索教程安装。
  2. 先获取OIDC身份提供商的URL(例如:https://www.idpserver.com),然后添加 /.well-known/openid-configuration以构成OIDC发现文档的URL(例如:https://www.idpserver.com/.well-known/openid-configuration)。
  3. 使用浏览器打开OIDC发现文档URL(注意:您需要将www.idpserver.com替换为真实的外部身份提供商的URL),在返回的JSON格式的内容中找到里面的"jwks_uri",OIDC发现文档示例如下:

    {
        "issuer": "https://accounts.example.com",
        "authorization_endpoint": "https://www.idpserver.com/oauth2/v3/authorize",
        "token_endpoint": "https://www.idpserver.com/oauth2/v3/token",
        "revocation_endpoint": "https://www.idpserver.com/oauth2/v3/revoke",
        "jwks_uri": "https://www.idpserver.com/oauth2/v3/certs",
        ......
    }

  4. 使用命令行工具运行以下OpenSSL命令:

    openssl s_client -servername www.idpserver.com -showcerts -connect www.idpserver.com: 443

  5. 在命令窗口中向上滚动,直至看到类似于下面示例的证书。如果您看到多个证书,请找到显示的最后一个证书(在命令输出底部)。一般来说,最后这一本证书就是证书链中的顶级中间CA证书,不过这取决于具体的外部OIDC身份提供商,IAM默认获取的用于计算指纹的证书就是证书链中的最后一本证书。

    -----BEGIN CERTIFICATE-----
    BASE64编码的证书
     -----END CERTIFICATE-----
    复制证书(包括 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 行)并将其粘贴到文本文件中。然后使用文件名certificate.crt保存该文件。

    JWKS URL的证书链必须以包含JWKS域名的终端实体证书开始,可以包含任何中间证书,然后以顶级中间CA证书或者根CA证书结尾。如果证书链顺序不同、包含重复证书或其他证书,您将在IAM中创建OIDC身份提供商失败,请修改服务器返回的证书链以解决错误。

  6. 使用命令行工具运行以下OpenSSL命令:

    openssl x509 -in certificate.crt -fingerprint -sha256 -noout

  7. 您的命令行工具将显示类似于以下示例的证书指纹:

    SHA256 Fingerprint=29: 60: 3B: 04:B1:E6: 78: 29:DC:A1: 84:A5:CB:B0: 87: 08: 09: 23: 40: 73: 27: 8C: 69: 07:A3: 5F:7E:BC:DE:D7: 21: 4B

  8. 然后去掉冒号,并转成小写,得到最终指纹如下:

    29603b04b1e67829dca184a5cbb0870809234073278c6907a35f7ebcded7214b

相关文档