# 获取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自动获取到的指纹是否正确。
![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/caution_3.0-zh-cn.png)
1. IAM使用其受信任的根证书颁发机构（CA）库来保护与OIDC身份提供商之间的通信，并通过这些CA验证JSON Web Key Set（JWKS）端点的TLS证书。如果你的OIDC身份提供商使用的证书不是由这些受信任的CA之一签发的，那么我们将使用你在身份提供商配置中设置的指纹（thumbprint）来保障通信安全。
2. IAM自动获取指纹时，默认是取JWKS端点证书链中的最后一本证书进行计算的。一般来说，JWKS端点的证书链的最后一本证书便是顶级中间CA证书，不过这取决于外部OIDC身份提供商的具体实现。在一些特殊场景中，例如：证书链中只有一本终端实体证书、或者证书链最后一本为根CA证书，那么最后得到的指纹分别便是这一本终端实体证书和根CA证书的。
 
#### 操作步骤
![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/caution_3.0-zh-cn.png)
如果您获得的指纹与您在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保存该文件。
   ![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/caution_3.0-zh-cn.png)
   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
   ```
   
   
 
