0
0

stunnelとLoad Balancer TLS終端サービスを使って暗号化通信を実施

Last updated at Posted at 2024-08-13

概要

stunnelとAWS Network Load Balancer(NLB)等のLoad Balancer TLS終端サービスを使って暗号化通信を行います

何がいいの?

既存のアプリケーションを修正することなくTLS暗号化が可能です。

方法1.AWS NLB TLS終端を使用

PC内のクライアントソフトは同じPC内のstunnelと通信します。
PC内のstunnelはNLBを経由して通信を転送します。
以下の例ではサーバーはRedisを使用しています。

NLB設定

  • AWSコンソールからEC2>>ロードバランサー>>ロードバランサーの作成を押下
  • ロードバランサーはNLBを選択
  • NLBを作成
    • ロードバランサー名
    • スキーム:インターネット向け
    • IPアドレスタイプ:IPv4
    • ネットワークマッピング:既存VPCのパブリックサブネットを指定
    • セキュリティグループ:リスナーポートを許可するセキュリティグループを指定
    • リスナーとルーティング:プロトコルTLS,ポートはリッスンするポートを指定(上図の例では6376),ターゲットグループの作成を選択
      • グループ:インスタンスまたはIPアドレスを選択
      • ターゲットグループ名
      • プロトコル ポート:サーバーアプリケーションのリッスンポート(上図の例ではTCP 6379)
      • IPアドレスタイプ:IPv4
      • VPC:既存VPC
      • ヘルスチェック:TCP
      • 「次へ」を押下
      • インスタンス選択またはIPアドレスを入力して「保留中として以下を含める」を押下
      • 「ターゲットグループの作成」を押下
      • 作成されたターゲットグループの属性を確認してクライアントIPアドレスの保持を確認(オンの場合はクライアントIPが保持され、オフの場合はNLBにてクライアントIPがNATされる)
    • リスナーの編集に戻って作成されたターゲットグループを選択
    • セキュリティポリシー:適切なポリシー(TLS1.3等)を選択
    • デフォルトSSl/TLSサーバー証明書:パブリックドメインのサーバー証明書登録のためACMの登録済み証明書や証明書インポートを選択
    • 「ロードバランサーの作成」を押下

Route53設定

インターネット上からNLBの名前解決できるようAレコードを登録します

  • Route53で登録したドメインのAレコードを追加
    • レコードタイプ:A
    • エイリアス:On
    • トラフィックのルーティング先:作成したNLBを選択

クライアント設定

  • stunnel downloadからダウンロードしてインストール
  • stunnel Service Startを実行しConfiguration>Edit Configurationを選択
  • アプリケーション登録
    例)app.example.com
     [example]
      client = yes
      accept = 127.0.0.1:6375
      connect = app.example.com:6376
    
  • Configuration>Reload Configurationを選択して設定反映

接続確認

  • PCからtelnetを使用してサーバーに接続確認
    C:\path\to>telnet 127.0.0.1 6375
    ping
    +PONG
    ping
    +PONG 
    
  • PC-NLB間のIPパケット取得するとTLS1.3で暗号化されたことが確認できます

方法2.OCI FLB TLS終端を使用

PC内のクライアントソフトは同じPC内のstunnelと通信します。
PC内のstunnelはOCI FLBを経由して通信を転送します。
以下の例ではサーバーはRedisを使用しています。

FLBおよびDNS設定

以下の設定を参考にします。FLBのリッスンポートは上図の例では6378を指定します。

OCI LoadBalancerを使ってNATとSSL/TLS終端を行う

クライアント設定

  • stunnel downloadからダウンロードしてインストール
  • stunnel Service Startを実行しConfiguration>Edit Configurationを選択
  • アプリケーション登録
    例)app.example.com
     [example]
      client = yes
      accept = 127.0.0.1:6377
      connect = app.example.com:6378
    
  • Configuration>Reload Configurationを選択して設定反映

接続確認

  • PCからtelnetを使用してサーバーに接続確認

    C:\path\to>telnet 127.0.0.1 6377
    ping
    +PONG
    ping
    +PONG
    
  • PC-FLB間のIPパケット取得するとTLS1.3で暗号化されたことが確認できます

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