LoginSignup
0
0

AWS ALB で 相互認証(mTLS) をする

Posted at

概要

ALB で X509 証明書を提示する相互認証クライアントをサポート

今まで

mTLS認証を⾏うためには NLB で HTTPS をパススルーして Apache 等 でクライアント認証を⾏う必要がありました

相互認証 (mTLS)

パススルー トラストストアで検証
証明書全体が HTTP ヘッダーとしてバックエンドターゲットに送信され、クライアント証明書が信頼できるかどうかが検証される。 ロードバランサーとクライアントは互いの ID を検証し、TLS 接続を確立して互いの間の通信を暗号化する。

トラストストアで検証

トラストストアで検証を試してみた。

秘密鍵の作成

rootCA_key.pem
openssl genrsa -out rootCA_key.pem 2048

CA 証明書の作成

rootCA_cert.pem
openssl req \
    -x509 \
    -new \
    -nodes \
    -sha256 \
    -days 365 \
    -key rootCA_key.pem \
    -out rootCA_cert.pem

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

client_cert.pem
openssl req \
    -x509 \
    -CA rootCA_cert.pem \
    -CAkey rootCA_key.pem \
    -days 365 \
    -new \
    -nodes \
    -keyout client_key.pem \
    -out client_cert.pem

CA 証明書を S3 に保存

aws s3 rootCA_cert.pem cp s3://bucket/cert/

トラストストアを作成

理解のために今回は AWS コンソールから操作していきます。

EC2 > トラストストア を開き、「トラストストアを作成」
スクリーンショット 2024-02-01 22.50.44.png

先程 S3 にアップロードした CA 証明書を選択して登録します。
スクリーンショット 2024-02-01 23.28.22.png

ALB での設定

「トランストアで検証」を選択し、先程作成したトランスストアを指定します。
スクリーンショット 2024-02-01 23.34.40.png

検証

クライアント証明書を指定してアクセス

[ec2-user@ip-172-31-30-120 ~]$ curl https://www.XXX.com
curl: (56) Recv failure: Connection reset by peer

クライアント証明書を指定せずアクセス

[ec2-user@ip-172-31-30-120 ~]$ curl https://www.XXX.com --key client_key.pem --cert client_cert.pem
test
0
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
0
0