Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ALBがついに対応したmTLS認証でトラストストア、パススルーを検証してみた
Search
tessy
December 20, 2023
Technology
0
3.1k
ALBがついに対応したmTLS認証でトラストストア、パススルーを検証してみた
ALBでmTLS認証を検証
tessy
December 20, 2023
Tweet
Share
More Decks by tessy
See All by tessy
Cloudflareで取得したドメインをRoute53+ACMで管理する
tessy
0
180
EC2 AutoScalingでスケーリングポリシー設定を失敗してうまく行かなった件とその対策
tessy
0
790
TerraformでEC2 Auto Scaling構築してみた
tessy
4
970
Other Decks in Technology
See All in Technology
DevOps文化を育むQA 〜カルチャーバブルを生み出す戦略〜 / 20250317 Atsushi Funahashi
shift_evolve
1
110
コンソールで学ぶ!AWS CodePipelineの機能とオプション
umekou
2
110
SSH公開鍵認証による接続 / Connecting with SSH Public Key Authentication
kaityo256
PRO
2
210
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
9
3.9k
大規模アジャイル開発のリアル!コミュニケーション×進捗管理×高品質
findy_eventslides
0
470
PostgreSQL Unconference #52 pg_tde
nori_shinoda
0
190
OPENLOGI Company Profile for engineer
hr01
1
22k
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Riverpod & Riverpod Generatorを利用して状態管理部分の処理を書き換えてみる簡単な事例紹介
fumiyasac0921
0
100
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
120
Dapr For Java Developers SouJava 25
salaboy
1
130
日本MySQLユーザ会ができるまで / making MyNA
tmtms
1
350
Featured
See All Featured
Music & Morning Musume
bryan
46
6.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
11
610
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
How to Ace a Technical Interview
jacobian
276
23k
Testing 201, or: Great Expectations
jmmastey
42
7.4k
It's Worth the Effort
3n
184
28k
GraphQLの誤解/rethinking-graphql
sonatard
70
10k
Building Applications with DynamoDB
mza
94
6.3k
Designing for humans not robots
tammielis
250
25k
Transcript
ALBがついに対応したmTLS認証で トラストストア、パススルー を検証してみた ⽇本IBM ⼿嶋 達也 2023/12/20
⾃⼰紹介 @tterima 取得したAWS資格 2013年4⽉〜2022年4⽉ アプリ開発チームに所属 2022年5⽉〜現在 インフラ(AWS)チームに所属 ようやくAWS経験が2年を超えました。 全冠まで残り1つ
re:Invent 2023(の直前)でALBのmTLS認証が発表されました!! https://aws.amazon.com/jp/about-aws/whats-new/2023/11/application-load-balancer-authenticate-x509-certificate-based-identities/
mTLS認証(相互TLS認証)があると 何が嬉しいのか
mTLS認証(相互TLS認証)があると何が嬉しいのか 従来設定 サーバ証明書により、サーバの真正性のみ確認 ALB 特定のデバイスのみアクセスさせたいサイトを想定します。 IDを発⾏していますが、悪意がある攻撃者にID情報が漏洩しました。 ログイン 成功
mTLS認証設定 mTLS認証により、相互の真正性を確認 ALB ログイン 失敗 mTLS認証(相互TLS認証)があると何が嬉しいのか 従来設定 サーバ証明書により、サーバの真正性のみ確認 ALB 特定のデバイスのみアクセスさせたいサイトを想定します。
IDを発⾏していますが、悪意がある攻撃者にID情報が漏洩しました。 ログイン 成功
これまでのmTLS対応 これまでmTLS認証を⾏うためには以下の通り、NLBでHTTPS要求をパススルー してApache等でクライアント認証を⾏う必要がありました。 このため、ALBのパスベースルーティングなどが困難でした。 これからは、ALBが利⽤できますね。 さらに、ALBでクライアント認証検証が可能となるため、EC2を建てる必要もなく なります。(トラストストア検証の場合) NLB Instance
構築してみよう
mTLS認証⽅式について ALBのmTLS認証には、以下の2通りの⽅式があります。 • トラストストア認証 トラストストアとしてサーバ証明書を登録し、ALBがクライアント証明書を検証する⽅式 ALB ALB Instance • パススルー認証
バックエンドにHTTPヘッダーとしてクライアント証明書パススルーする⽅式
トラストストア検証⽅式
構築 - クライアント証明書の作成 opensslコマンドでクライアント証明書を作成します。 今回はいわゆるオレオレ証明書を作成します。(本番で使⽤できません) トラストストアに登録 クライアント証明書 として利⽤
構築 ‒ ルート証明書をトラストストアとして登録 S3に先ほど作成したrootCA_cert.pemをアップロードして、 トラストストアとして登録します。 作成したトラストストアをALBと紐づけることでmTLS認証が可能です。
構築 ‒ ルート証明書をALBのトラストストアとして登録 HTTPSリスナーの設定にmTLSの設定があるため、先ほどのトラストスト アを設定します。 ALBアクセス時には固 定レスポンスを返すよ うに設定しています。
アクセス確認 クライアント証明書を指定してアクセス クライアント証明書を指定せずアクセス 無事にクライアント証明書指定時だけアクセスさせることができました。 これで悪意があるユーザからの攻撃を防ぐことが可能になります。
パススルー⽅式
構築 ‒ パススルー設定 パススルーの場合はトラストストアのような設定は不要です。 パススルーを設定するだけでバックエンドにクライアント証明書が連携されます。 今回はLambdaを作成してヘッダーの様⼦を眺めます。 参考:https://dev.classmethod.jp/articles/aws-alb-mtls-pass-through/ ALB Lambda function
アクセス確認 ‒ クライアント証明書指定 クライアント証明書を 指定 HTTPヘッダーとしてクライアント証明書が バックエンドに送信
アクセス確認 ‒ クライアント証明書未指定 クライアント証明書が格納された HTTPヘッダーが存在しない。 クライアント証明書無しでもバックエンドに送信されるため、注意が必要です。 通常はバックエンドにApacheなどを配置して正当性を検証します。
まとめ • mTLS認証をALBだけで簡単に構築できた。 • トラストストア検証はお⼿軽で、バックエンドのクライアント認証処理を オフロード可能なため、今後主流になる予感 • パススルー⽅式もサポートされているため、NLBをALBに置き換え可能