AWS プログラミング

NLB経由でHTTPS通信しようとしたら「400 Bad Request」が表示された時

AWSのロードバランサーの設定をしていて、なぜか「400 Bad Request」が出たのでその対応です。

 

原因

なんともまあ情けない原因ですが、

リスナーをHTTPで受け付けてそのトラフィックをHTTPSに流そうとしていたことが原因でした。

 

エラーメッセージには以下のように表示されていました。

The plain HTTP request was sent to HTTPS port

 

対処法

LBのリスナーにHTTPSを追加してそのトラフィックを流して、証明書をアタッチして完了!

これだけ!と言いたいところでしたが、若干のつまりポイントがありました。

 

TCP:443とTLS:443

NLBではリスナーを設定するときにプロトコルとポートを指定します。

そのときにHTTPS通信をしたいと思ったら、以下の2通りがあります。

 

  • TCP: 443
  • TLS: 443

 

上記の違いは以下の通り。(間違ってたら誰かご指摘ください。。。)

 

  • TCP: 443

こちらはHTTPSで受け付けたリクエストをそのままターゲットに流す。

つまりSSLによる暗号化はNLBでは行われず、ターゲット先に委ねられる。(もはや証明書をリスナーにアタッチする項目がなかった)

 

  • TLS: 443

NLBで暗号化と復号化を行う。つまりリスナーにSSL証明書を1つ以上アタッチする必要がある。

 

完全にメモ書きでしかも正しいかわからないです。

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

-AWS, プログラミング
-,

© 2020 クラインの備忘壺