3つのWebサーバー用のOpenBSDリレーSSLリバースプロキシ

3つのWebサーバー用のOpenBSDリレーSSLリバースプロキシ

私は3つの異なるコンピュータでファイアウォールの背後で仮想サーバーを実行しています(各コンピュータはクラスタではなく異なるドメインを提供しています)。 Let's Encrypt証明書を自動的に更新するには、ドメイン名に基づいて3つの異なるサーバーに要求を送信するプロキシが必要です。

                        +--------+      +-------------+                      
                        |        +----->| domain1.com | 
                        |        |      +-------------+
                        |        |      +-------------+
domain1,2,3.com-->443-->| proxy  +----->| domain2.com |
                        |        |      +-------------+
                        |        |      +-------------+ 
                        |        +----->| domain3.com |
                        +--------+      +-------------+ 

プロキシはOpenBSDで中継されます。私はHTTPを使用して一般的なWebサービスを設定するためにこのガイド(まったく同じ状況)に従いました。 https://serverfault.com/questions/856807/openbsd-how-to-use-relayd-and-httpd-for-redirecting-subdomain-requests

しかし、SSLとHTTPSは異なるようです。プロキシとサービスドメインのWebサーバーにSSL証明書をインストールする必要があるようです。

  1. 誰でもこれに適切な構文を提案できますか?
  2. 同じシステムにポート80とポート443の両方を提供できますか?ありがとうございます。

ベストアンサー1

通常、このタイプのフロントエンドでは、フロントエンドに SSL トラフィックをインストールし、暗号化されていない通常の HTTP トラフィックをバックエンドに転送します。

          https                           http
       Internet -------->  relayd reverse proxy  ------->  internal LAN web server
                 port 443                        port 80

たとえば、次のようになりますman relayd

次の構成では、ロードバランシングモード(TLSアクセラレーションとレイヤ7ロードバランシング)を使用して、HTTP WebサーバープールにセキュアHTTPS接続を転送するためのリレーを追加します。 HTTPプロトコル定義は、クライアントとサーバーのアドレス情報を含む2つのHTTPヘッダーを追加し、「Keep-Alive」ヘッダー値を設定されたセッションタイムアウトに設定し、ハッシュに「sessid」変数を含めてターゲットホストを計算します。

http プロトコル "https" {
一致ヘッダー設定 "X-Forwarded-For" \
値 "$REMOTE_ADDR"
一致ヘッダー設定 "X-Forwarded-By" \
値 "$SERVER_ADDR:$SERVER_PORT"
ヘッダー設定 "Keep-Alive" 値と一致 "$タイムアウト"

一致クエリハッシュ "sessid"
一致ハッシュ "sessid"


ブロックパス"/cgi-bin/index.cgi"値"を渡すコマンド=

tls {TLSv1.0なし、パスワード「HIGH」}
}

"tlsaccel"リレー{
www.example.comポート443 TLS
プロトコル"https"でリッスンして
ポート8080モードロードバランシングチェックtcpに転送
}

sslまたは、tlsがある場合は、key仮想ホストに関連付けられているIPアドレスに基づいてファイルを見つけようとします。 X.509証明書の場合は、秘密鍵と証明書の公開鍵でその証明書を見つけようとしますrelayd/etc/ssl/private/etc/ssl

~からリレーエージェント

"listen on $relayd_addr port $relayd_port ssl" 行などの ssl キーワードがある場合、リレーは暗号化された SSL プロトコルを使用して接続を受け入れます。リレーは/etc/ssl/private/address.keyで秘密鍵を探し、/etc/ssl/address.crtで公開証明書を探します。ここで、addressは受信するリレーの指定されたIPアドレスです。

したがって、ファイル名はリレーがリッスンしているアドレスと同じでなければなりません。私たちの例では、Relayd.confは "relayd_addr = 127.0.0.1"を受け取っているので、ファイル〜しなければならない名前は127.0.0.1.key、127.0.0.1.csr、127.0.0.1.crtです。

ポート80を提供するには、上記の設定にHTTPプロキシとして一般的な構文を追加するだけです。同時に共存できます。

おすすめ記事