GitHub ActionsとAWSのOIDC連携によるAssume Roleが”OpenIDConnect provider’s HTTPS certificate doesn’t match configured thumbprint”エラーとなる

2022.11.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、GitHub ActionsとAWSのOIDC連携によるAssume RoleがOpenIDConnect provider's HTTPS certificate doesn't match configured thumbprintエラーとなる際の対処についてです。

事象

GitHub ActionsではOIDC(OpenID Connect)がサポートされ、OIDCプロバイダーとしてAWSなどの各種クラウドサービスと連携可能となりました。

OIDC連携を設定したAWSとのAssumeRoleを行う次のようなGitHub Actions Workflowを作成しました。

.github/workflows/assign.yml

on:
  issues:
    types:
      - assigned
      - opened

jobs:
  create_pr:
    runs-on: ubuntu-latest
    env:
      REPO: ${{ github.repository }}
      ISSUE_NUM: ${{ github.event.issue.number }}
      ISSUE_TITLE: ${{ github.event.issue.title }}
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      AWS_OIDC_ROLE_ARN: ${{ secrets.AWS_OIDC_ROLE_ARN }}
      AWS_REGION: ap-northeast-1
    permissions:
      id-token: write
      issues: write
      contents: write
      pull-requests: write
    steps:
      #中略
      - name: Assume Role
        uses: aws-actions/configure-aws-credentials@v1
        with:
          role-to-assume: ${{ env.AWS_OIDC_ROLE_ARN }}
          aws-region: ${{ env.AWS_REGION }}

      #中略

上記のWorkflowは昨日までは正常に動作していたのですが、本日実行すると、下記のエラーが発生するようになりました。

Error: OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint

原因調査

調べてみると、今年1月にGitHubによる以下のアナウンスがありました。GitHub ActionsのSSL証明書の更新作業時に、中間認証局で予期せぬ更新が行われため、OIDCプロバイダー側で新しいthumbprintである6938fd4d98bab03faadb97b34396831e3780aea1の追加が必要とのことです。

While renewing GitHub Actions SSL certificates, an unexpected change in the intermediate certificate authority broke workflows using Open ID Connect (OIDC) based deployment to AWS.

To fix the issue please follow the following steps:

  1. In the AWS Console, go to IAM -> Identity Providers
  2. Open the provider(s) for token.actions.githubusercontent.com
  3. Click Manage under Thumbprints
  4. Add the thumbprint 6938fd4d98bab03faadb97b34396831e3780aea1

We’re continuing to investigate, to ensure this issue does not reoccur in the future.

AWS IAMに登録されているGitHubのOIDCプロバイダーを確認してみます。

すると古いthumbprintのみが登録されていますね。

対処、解決

新しいthumbprintの追加

OIDCプロバイダーに新しいthumbprintを追加します。

[Thumbprints > Manage]をクリック。

新しいthumbprint6938fd4d98bab03faadb97b34396831e3780aea1を追加します。

追加できました。

FailしたWorkflow RunのJobをRe-Runします。

今度は実行がSuccessしました!

古いthumbprintの削除

OIDCプロバイダーから古いthumbprintを削除してみます。

[Thumbprints > Manage]で古いthumbprintをRemove。

削除できました。

GitHub Actions上でOIDCによるAssumeRoleを実行すると、引き続きSuccessとなりました!

おわりに

GitHub ActionsとAWSのOIDC連携によるAssume RoleでOpenIDConnect provider's HTTPS certificate doesn't match configured thumbprintエラーとなる際の対処についてでした。

エラーに遭遇したのがちょうどIAM周りの設定をしていた時だったため、何かしちゃったのかと思いましたがそんなこと無かったです。

ちなみにthumbprintは自分で計算して取得することもできます。これは次回以降に試してみたいと思います。

参考

以上