0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ALBで複数のSSL証明書を使う際にハマったこと

Last updated at Posted at 2024-06-23

目的

ALBのSNIサポートによって複数の証明書を選択した際に、クライアントからのHTTPSリクエストが失敗する問題が発生しました。そのためALBのSNIに関する注意点を備忘録としてまとめます。

ALBのSNIサポートについて

ALBで複数のドメインを捌きたい際に、これまでは複数のALBを用意する必要がありました。しかしアップデートにより、同一のロードバランサで複数の証明書を使えるようになりました。
Application Load BalancerがSNIを利用した複数のTLS証明書のスマートセレクションをサポートしました

HTTPSリクエスト失敗に至った経緯

エラー発生に陥ったイベントを時系列にまとめます。
(1) これまでサードパーティからACMへImportしたEVSSL(prod.exaple.com)が近日中に失効する。
(2) 応急処置として、ACM側で発行した証明書(*.exaple.com)をALBに追加。この時は2つのSSL証明書がアタッチされている。
(4) (1)でImportした証明書の期限が切れた後、クライアントからのHTTPSリクエストが失敗していることが発覚。

原因

ALBが選択する証明書の優先順位ロジックによるもの。

この問題が引き起こされるまでは複数の証明書がALBにアタッチされていたとしても、有効な証明書が自動で選択されると思っていましたが、ちょっと違いました。

↓↓↓↓↓以下公式Docより↓↓↓↓↓↓↓↓↓↓↓
ALBは以下の優先順位によって、複数存在する証明書から最適な証明書を動的に判断。

ロードバランサーは、SNIをサポートするスマート証明書の選択アルゴリズムを使用します。クライアントから提供されたホスト名が証明書リスト内の単一の証明書と一致する場合、ロードバランサーはこの証明書を選択します。

Application Load Balancer 用の HTTPS リスナーを作成する

つまり、今回の場合はサードパーティからImportしたEVSSL(prod.exaple.com)が、ACM側で発行した証明書(*.exaple.com)よりも優先順位が高く判断されたため、有効期限を迎えたEVSSLが引き続き使用されたことでHTTPS通信が失敗する問題が発生しました。

一応、ALBの証明書の選択アルゴリズムは下記の優先順位で判定されます。
・パブリックキーアルゴリズム (ECDSA よりも RSA を優先)
・ハッシュアルゴリズム (SHA よりも MD5 を優先)
・キーの長さ (最大が優先)
・有効期間

今回の場合はこのアルゴリズムの前にクライアントからのホスト名が、EVSSL(prod.exaple.com)に一致すると判断されて、有効期限を迎えても引き続き使われていました。(ALBログから確認)

まとめ

今回はALBのSNIサポートによって複数の証明書を選択する機能でハマったところを共有しました。
有効期限を迎えた証明書は不必要にALBに残さないようにします。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?