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

More than 3 years have passed since last update.

AWS Private Subnetに配置したALB+gRPCサーバーに接続する際の簡単TLS/SSL設定方法

Last updated at Posted at 2022-01-24

ALBの後ろにgRPCサーバーを置く場合、ALB <=> gRPC server間はInsecureな通信が可能ですが Client <=> ALB間はHTTP2のため、TLSが必須になります。そのため、証明書を発行しALBに設定する必要があります。
外部に公開しないサーバーであったとしてもALBでのSSL証明書の設定が必須なので、今回は簡単な設定方法の紹介です。

今回紹介の方法

  • "grpc.ssl_target_name_override"オプションによる設定

他の方法

"grpc.ssl_target_name_override"オプションによる設定

前提: すでに、何らかの有効なSSL証明書を取得している
取得がない場合は、他の方法を取ったほうが楽かもしれません。

前準備

ALBに、有効なSSL証明書の登録をしておいてください。証明書さえ設定しておけば、DNSの設定は不要です。もちろんワイルドカード証明書も利用可能です。
スクリーンショット 2022-01-24 16.12.43.png

Client Code

import * as grpc from "grpc"

const host = "my.inside.address:50051" // 本来の接続アドレス
const sslCn = "my.domain.org" // ALBに設定したSSL証明書のCN
const cred = grpc.credentials.createSsl()

console.log("Connect to host:", host)
const client = new MyGrpcClient(host, cred, {
  "grpc.ssl_target_name_override": sslCn
})

設定はいたって簡単で、credentialにはcreateSsl()で作成、オプションとして grpc.ssl_target_name_override にSSLのCNを渡すだけになります。
実装はTypeScriptになっていますが、オプションはほぼすべての言語で使用可能だと思うので、各言語のリファレンスを参照してください。

なお、Server自体では追加設定は不要です。ALBとClientのみ設定すれば良いです。

他の方法

今回は方法は割愛します。それぞれを利用した際のデメリットを載せておきます。

プライベート認証機関

こちらを利用することで簡単に内部ネットワーク向け証明書を発行可能だが、最低 400$/月かかるため、経済的に優しくない。

おれおれ証明書

作るのが手間+有効期限があるので、切れたときの更新がだるい

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