1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クライアント証明でAPIgatewayへのアクセス制御を行う方法

1
Posted at

クライアント証明でAPIgatewayへのアクセス制御を行う方法

APIGatewayにクライアント証明書を設定し、mTLS認証を導入することになったため手順を残しておく
※windows11での手順となります。
注意:前提として、独自ドメインを取得しておいてください。これがないと出来ないはずです。

必要手順は以下の通り

  1. 証明書の発行
  2. 1で発行した証明書をACMに登録

証明書の発行手順について

GitBashなどをインストールして作業を行ってください。
※任意のフォルダ(証明書発行用フォルダ)などを作って行ってください。
※ドメインはテスト用にapi.example.comとしています。取得したドメインに変更してください。

CA(認証局)を作成

openssl genrsa -out ca.key 2048

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \
  -subj "//C=JP/ST=Tokyo/L=Chiyoda/O=MyOrg/OU=CA/CN=MyRootCA"

クライアント証明書を作成

# 秘密鍵
openssl genrsa -out client.key 2048

# CSR(署名要求)
openssl req -new -key client.key -out client.csr \
-subj "//C=JP/ST=Tokyo/L=Chiyoda/O=ClientOrg/CN=myclient"

# CAで署名(client.crt が生成される)
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-out client.crt -days 365 -sha256

サーバー証明書を作成(ACM用)

# 秘密鍵
openssl genrsa -out server.key 2048

# CSR(署名要求)
openssl req -new -key server.key -out server.csr \
-subj "//C=JP/ST=Tokyo/L=Chiyoda/O=ServerOrg/CN=api.example.com"

# CAで署名(server.crt が生成される)
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-out server.crt -days 365 -sha256

作成されるファイル一覧

ca.key          ← 認証局の秘密鍵
ca.crt          ← 認証局の証明書(API Gateway にアップロード)

client.key      ← クライアント秘密鍵(curl等に使う)
client.crt      ← クライアント証明書

server.key      ← サーバー秘密鍵(ACM用)
server.crt      ← サーバー証明書(ACM用)
他のあるけど、使わないため割愛

発行した証明書をACMに登録する

以下画面に各内容を転記して、登録する
証明書:server.crt の中身
プライベートキー:server.key の中身
証明書チェーン:ca.crt の中身

image.png

S3バケットに認証局の証明書を格納する

適当なバケット作成して、格納しておく
image.png

カスタムドメインの追加

発行した証明書でAPIgatewayにカスタムドメインを追加する
image.png
相互TLS認証をオンにし、ACM証明書の先ほど登録した証明書をセットする
image.png

相互認証をオンにするとこんな感じで、URIを求められるため入力する
URIはS3バケットに記載されています
image.png

API マッピングを追加

作成したカスタムドメイン名をクリック

「API マッピングを追加」ボタンを押す

マッピングの設定

API:該当のREST APIを選択
ステージ:例 prod
パスプレフィックス:空白のままでもOK

「保存」を押下

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?