OpenID Connect ID プロバイダーのサムプリントの取得 - AWS Identity and Access Management

OpenID Connect ID プロバイダーのサムプリントの取得

IAM で OpenID Connect (OIDC) ID プロバイダーを作成する場合、ID プロバイダー (IdP) のサムプリントを提供する必要があります。IAM では、外部 ID プロバイダー (IdP) が使用する証明書に署名した最上位中間認証局 (CA) のサムプリントが必要です。拇印は、OIDC 互換 IdPの証明書を発行するために使用された CAの 証明書の署名です。IAM の OIDC ID プロバイダーを作成する場合、その IdP からの ID を信頼し、AWS アカウントへのアクセス権限を与えることになります。CA の証明書のサムプリントを提供することにより、CA によって発行された証明書を、登録されているものと同じ DNS 名で信頼します。これにより、IdP の署名証明書を更新したときに各アカウントの信頼を更新する必要がなくなります。

重要

ほとんどの場合、フェデレーションサーバーは 2 つの異なる証明書を使用します。

  • 1 つ目は、AWS と IdP との間に HTTPS 接続を確立します。この証明書は、AWS Certificate Manager などのよく知られたパブリックルート CA によって発行されているはずです。これにより、クライアントは証明書の信頼性とステータスを確認できます。

  • 2 つ目はトークンの暗号化に使用され、プライベートまたはパブリックのルート CA によって署名されているはずです。

IAM OIDC IDプロバイダーは、AWS Command Line Interface、Tools for Windows PowerShell、またはIAM API を使用して作成できます これらのメソッドを使用するときは、サムプリントを手動で取得し、AWS に送信する必要があります。IAM コンソールを使用して OIDC ID プロバイダーを作成すると、コンソールはサムプリントの取得を試みます。あわせて、OIDC IdP のサムプリントを手動で取得し、コンソールで正しいサムプリントが取得されていることを確認することをお勧めします。

OIDC プロバイダーのサムプリントを取得するには、ウェブブラウザと OpenSSL コマンドラインツールを使用します。詳細については、次のセクションを参照してください。

OIDC IdP のサムプリントを取得するには

  1. OIDC IdP のサムプリントを取得する前に、OpenSSL コマンドラインツールを取得する必要があります。このツールを使用して、OIDC IdP の証明書チェーンをダウンロードし、証明書チェーンで最終的な証明書のサムプリントを作成します。OpenSSL のインストールと設定が必要な場合は、「OpenSSL のインストール」および「OpenSSL の設定」の手順に従います。

    注記

    AWS は、IdPs サーバー証明書を検証するために証明書のサムプリントを使用する代わりに、信頼された証明機関 (CA) のライブラリを通じて一部の OIDC ID プロバイダ (IdP) との通信を保護します。これらの OIDC IdPs には、Google と Amazon S3 バケットを使用して JSON ウェブキーセット(JWKS)エンドポイントをホストするものが含まれます。このような場合、従来のサムプリントは設定に残りますが、検証には使用されなくなります。

  2. 次のように、OIDC IdP の URL (https://server.example.com など) で開始し、/.well-known/openid-configuration を追加して IdP の設定ドキュメントの URL (以下参照) を作成します。

    https://server.example.com/.well-known/openid-configuration

    この URL をウェブブラウザで開き、server.example.com を IdP のサーバー名に置き換えます。

  3. 表示されたドキュメントで、ウェブブラウザを使用します。検索機能を使用して、テキスト "jwks_uri" を検索します。テキスト "jwks_uri" の直後のコロン (:) の後に URL があります。URL の完全修飾ドメイン名をコピーします。https:// または最上位ドメインより後のパスは含めないでください。

    { "issuer": "https://accounts.example.com", "authorization_endpoint": "https://accounts.example.com/o/oauth2/v2/auth", "device_authorization_endpoint": "https://oauth2.exampleapis.com/device/code", "token_endpoint": "https://oauth2.exampleapis.com/token", "userinfo_endpoint": "https://openidconnect.exampleapis.com/v1/userinfo", "revocation_endpoint": "https://oauth2.exampleapis.com/revoke", "jwks_uri": "https://www.exampleapis.com/oauth2/v3/certs", ...
  4. OpenSSL コマンドラインツールを使用して、次のコマンドを実行します。keys.example.com を、ステップ 3 で取得したドメイン名に置き換えます。

    openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
  5. コマンドウィンドウで、次の例のような証明書が表示されるまでスクロールアップします。複数の証明書が表示される場合は、表示される最後 (コマンド出力の最後) の証明書を見つけます。これには認証機関チェーンの最上位中間 CA の証明書が含まれています。

    -----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----

    証明書 (-----BEGIN CERTIFICATE----- および -----END CERTIFICATE----- 行を含む) をコピーして、テキストファイルに貼り付けます。次に、certificate.crt という名前でファイルを保存します。

  6. OpenSSL コマンドラインツールを使用して、次のコマンドを実行します。

    openssl x509 -in certificate.crt -fingerprint -noout

    コマンドウィンドウには、次の例のような証明書サムプリントが表示されます。

    SHA1 Fingerprint=99:0F:41:93:97:2F:2B:EC:F1:2D:DE:DA:52:37:F9:C9:52:F2:0D:9E

    この文字列からコロン(:)を削除して、次のような最終的なサムプリントを作成します。

    990F4193972F2BECF12DDEDA5237F9C952F20D9E
  7. AWS CLI、Tools for Windows PowerShell、または IAM API を使用して IAM OIDC ID プロバイダーを作成する場合は、プロバイダーの作成時にこのサムプリントを提供します。

    IAM コンソールで IAM OIDC ID プロバイダーを作成する場合は、OIDC プロバイダーの作成時にコンソールの [プロバイダー情報の検証] ページに表示されるサムプリントと、このサムプリントを比較します。

    重要

    取得したサムプリントが、コンソールに表示されるサムプリントに一致しない場合は、コンソールで OIDC プロバイダーを作成しないでください。代わりに、しばらく待ってから OIDC プロバイダーの作成を再試行します。これにより、プロバイダーを作成する前に、サムプリントが確実に一致するようになります。再試行してもサムプリントが一致しない場合は、IAM フォーラムを使用して AWS にお問い合わせください。

OpenSSL のインストール

まだ OpenSSL がインストールされていない場合は、このセクションの手順に従います。

Linux または Unix で OpenSSL をインストールするには

  1. OpenSSL: ソース、Tarballs(https://openssl.org/source/) にアクセスします。

  2. 最新のソースをダウンロードし、パッケージを構築します。

Windows へ OpenSSL をインストールするには

  1. OpenSSL: バイナリディストリビューション(https://wiki.openssl.org/index.php/Binaries) にアクセスして、Windows バージョンをインストールできるサイトの一覧を参照してください。

  2. 選択したサイトの指示に従って、インストールを開始します。

  3. Microsoft Visual C++ 2008 再頒布可能パッケージをインストールするように求められ、それがまだシステムにインストールされていない場合は、ご使用の環境に適したダウンロードリンクを選択してください。「Microsoft Visual C++ 2008 再配布可能セットアップウィザード」の指示に従ってください。

    注記

    Microsoft Visual C++ 2008 再頒布可能ファイルがシステムに既にインストールされているかどうかわからない場合は、最初に OpenSSL をインストールしてみてください。Microsoft Visual C++ 2008 再頒布可能ファイルがまだインストールされていない場合、OpenSSL インストーラーに警告が表示されます。インストールする OpenSSL のバージョンと一致するアーキテクチャ (32 ビットまたは 64 ビット) をインストールすることを確認します。

  4. Microsoft Visual C++ 2008 再頒布可能ファイルをインストールしたら、ご使用の環境に適したバージョンの OpenSSL バイナリを選択し、ファイルをローカルに保存します。OpenSSL のセットアップウィザードを起動します。

  5. OpenSSL のセットアップウィザード」の指示に従ってください。

OpenSSL の設定

OpenSSL コマンドを使用する前に、OpenSSL がインストールされている場所に関する情報が含まれるように、オペレーティングシステムを構成する必要があります。

Linux または Unix で OpenSSL を設定するには

  1. コマンドラインで、OpenSSL_HOME 変数を OpenSSL のインストール場所に設定します。

    $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
  2. OpenSSL インストールを含めるパスを設定します。

    $ export PATH=$PATH:$OpenSSL_HOME/bin
    注記

    export コマンドを使用して環境変数に加えた変更は、現在のセッションでのみ有効です。環境変数をシェル設定ファイルで設定することで、環境変数に永続的な変更を加えることができます。詳細については、「インスタンスのオペレーティングシステムに関するドキュメント」を参照してください。

Windows での OpenSSL を設定するには

  1. [コマンドプロント] ウィンドウを開きます。

  2. OpenSSL_HOME 変数を OpenSSL のインストール場所に設定します。

    C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
  3. OpenSSL_CONF 変数を OpenSSL インストールの設定ファイルの場所に設定します。

    C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
  4. OpenSSL インストールを含めるパスを設定します。

    C:\> set Path=%Path%;%OpenSSL_HOME%\bin
    注記

    コマンドプロンプトウィンドウで Windows 環境変数に加えた変更は、現在のコマンドラインセッションでのみ有効です。環境変数をシステムプロパティとして設定することで、環境変数を永続的に変更することができます。正確な手順は、使用している Windows のバージョンによって異なります。(たとえば、Windows 7では、[コントロールパネル]、[システムとセキュリティ]、[システム]の順に開きます。次に、[システムの詳細設定]、[詳細設定]タブ、[環境変数]を選択します。) 詳細については、「Windows dドキュメント」を参照してください。