通过OpenSSL获取OIDC IdP的指纹

本文介绍如何使用OpenSSL工具快速获取OpenID Connect(OIDC)身份提供商(IdP)的SSL/TLS证书指纹。

前提条件

请确保您的系统中已正确安装 OpenSSL 命令行工具,本文以‌Windows 10操作系统‌为例。

  1. 安装OpenSSL。

    1. Win32/Win64 OpenSSL‌下载安装包‌。

    2. 运行安装包。

      建议保持默认安装路径(C:\Program Files\OpenSSL-Win64)。

  2. ‌手动配置环境变量。

    在桌面鼠标右键单击此电脑,选择属性 > 高级系统设置 > 环境变量 > 系统变量,在Path‌中添加OpenSSLbin目录路径(如 C:\Program Files\OpenSSL-Win64\bin)‌。

  3. 验证安装结果。

    在命令提示符或PowerShell中执行以下命令:

    openssl version  
    • 若输出类似以下内容,则表示OpenSSL 已正确安装。

      OpenSSL 3.4.1 11 Feb 2025 
    • 若提示“命令未找到”或“无法识别”‌,则需要您检查环境变量路径是否包含 x:\xxx\OpenSSL-Win64\bin 目录。

操作步骤

以下操作以 https://oauth.aliyun.com 为示例域名,实际执行时需将其替换为您自己的IdP域名。

步骤一:获取顶级域

  1. 为了访问OIDC IdP的配置信息,您需要构建该IdP的配置文档URL,即在IdP的基础URL后添加/.well-known/openid-configuration。以https://oauth.aliyun.com为例,构建的IdP配置文档URL如下:

    https://oauth.aliyun.com/.well-known/openid-configuration
  2. 打开浏览器访问构建好的IdP配置文档URL,我们可以得到如下所示的JSON格式配置文档‌。从中找到jwks_uri字段,获取其中的完全限定域名(不包括https://和顶级域后的路径),即oauth.aliyun.com

    IdP配置文档URL

    {
        "authorization_endpoint": "https://signin.aliyun.com/oauth2/v1/auth",
        "code_challenge_methods_supported": [
            "plain",
            "S256"
        ],
        "id_token_signing_alg_values_supported": [
            "RS256"
        ],
        "issuer": "https://oauth.aliyun.com",
        //完全限定域名:oauth.aliyun.com
        "jwks_uri": "https://oauth.aliyun.com/v1/keys",
        "requestid": "f7d3899f-5677-4634-a7dd-832818bb062a",
        "response_types_supported": [
            "code"
        ],
        "revocation_endpoint": "https://oauth.aliyun.com/v1/revoke",
        "scopes_supported": [
            "openid",
            "aliuid",
            "profile"
        ],
        "subject_types_supported": [
            "public"
        ],
        "token_endpoint": "https://oauth.aliyun.com/v1/token",
        "userinfo_endpoint": "https://oauth.aliyun.com/v1/userinfo"
    }

步骤二:获取证书

  1. 打开终端,输入以下命令,其中的oauth.aliyun.com步骤一中获取的完全限定域名。

    openssl s_client -servername oauth.aliyun.com -showcerts -connect oauth.aliyun.com:443
  2. 在输出结果中,通过滚动或搜索关键字( -----BEGIN CERTIFICATE----------END CERTIFICATE-----)找到包含证书的区块。若存在多个证书条目,默认选取最后一个证书。

    说明

    标准的PEM格式证书必须包含以下固定边界标识符:

    • ‌起始标记‌:-----BEGIN CERTIFICATE-----

    • 结束标记:-----END CERTIFICATE-----

    -----BEGIN CERTIFICATE-----
    MIIEaTCCA1GgAwIBAgILBAAAAAABRE7wQkcwDQYJKoZIhvcNAQELBQAwVzELMAkG
    A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
    ···
    -----END CERTIFICATE-----
  3. 完整复制以上证书内容,确保包含完整的‌起始标记‌和结束标记。使用纯文本编辑器新建文件,将复制的证书内容粘贴至文件中,并以 .crt 为扩展名保存。文件名示例:certificate.crt

  4. ‌(可选)验证文件有效性‌。

    打开终端运行以下命令,无报错即表示格式正确。

    openssl x509 -in certificate.crt -text -noout

步骤三:获取指纹

  1. 打开终端或命令提示符输入以下完整命令并回车。

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

    输出证书指纹。

    SHA1 Fingerprint=90:2E:F2:DE:EB:3C:5B:13******
  2. 将该指纹中的所有:去除,以获取最终指纹。

    902EF2DEEB3C5B13******