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
4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ALBがついに対応したmTLS認証でトラストストア、パススルーを検証してみた
ALBでmTLS認証を検証
tessy
December 20, 2023
More Decks by tessy
See All by tessy
Kindに頼らない!おうちで構築するマルチマスターKubernetes Cluster
tessy
0
210
Cloudflareで取得したドメインをRoute53+ACMで管理する
tessy
1
420
EC2 AutoScalingでスケーリングポリシー設定を失敗してうまく行かなった件とその対策
tessy
0
940
TerraformでEC2 Auto Scaling構築してみた
tessy
4
1.2k
Other Decks in Technology
See All in Technology
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
200
振り返りこそエンジニアの本領
negima
0
290
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
1
470
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
200
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
130
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
3
2.2k
grill-me(grilling):AI駆動開発を超助けてくれるSkill / grill me
mathbullet
0
110
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
110
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
330
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
160
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
260
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
290
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
WCS-LA-2024
lcolladotor
0
820
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
Statistics for Hackers
jakevdp
799
230k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
RailsConf 2023
tenderlove
30
1.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
For a Future-Friendly Web
brad_frost
183
10k
KATA
mclloyd
PRO
35
15k
Abbi's Birthday
coloredviolet
3
9.8k
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に置き換え可能