概要
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 > トラストストア を開き、「トラストストアを作成」
先程 S3 にアップロードした CA 証明書を選択して登録します。
ALB での設定
「トランストアで検証」を選択し、先程作成したトランスストアを指定します。
検証
クライアント証明書を指定してアクセス
[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