SSLを終了するHAProxyは、SSLをバックエンドサーバーに送信します


14

HAProxyでSSLを終了し、ヘッダーを操作し、URLを書き換え、トラフィックを再暗号化し、SSLとしてバックエンドサーバーに送信しますか?

私はこれを行う方法を見つけることができないようです。通常のSSL終了を完了させ、プレーンHTTP要求をバックエンドに送信できます。ただし、バックエンドにSSLを送信する必要があります。

次の機能が必要です。

  • x-forwarded-forヘッダーを抽出して、プロキシの背後にある実際のクライアントIPを取得します。
  • Cookieを使用してセッションスティッキを実装します。
  • URLの書き換えを行います。
  • Cookieベースのセッションスティッキネスを使用して、SSLトラフィックをバックエンドに送信します。

haproxyの終了時にSSLを終了しない限り、URLの書き換えを完了できません。

ここの善良な人々からの助けは大歓迎です。


1
現在の構成を投稿して、機能していないものを教えてください。
GregL

回答:


30

haproxy.cfgには特別なことは何もありません。HAProxyフロントエンド内で必要なURL書き換えとヘッダー操作を設定し、SSLバックエンドにトラフィックをリダイレクトします。以下に簡単な例を示します。

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none

1
驚くばかり!試してみましょう。私はその「サーバー.... ssl」のことをどこにも見つけることができませんでした。
オアザビル

助けてくれて本当にありがとうございます。私はそれを機能させることができました。ただし、SSLスティッキを機能させることができませんでした。助けてくれませんか?質問はここにある:serverfault.com/questions/738397/...
oazabir

素晴らしい、私は助けられてよかったです。私の答えを受け入れることを忘れないでください。そうすれば、他の人がすぐに役立つことが
わかり

sslにnoneを検証させることで、暗号化は本当に機能しますか?haproxyのドキュメントによると、「「none」に設定されている場合、サーバー証明書は検証されません。他の場合、「ca-file」のCAを使用してサーバーから提供された証明書が検証されます」誰かがこれを明確にできますか?
mjm

ssl verify noneHAProxyとバックエンドサーバー間のトラフィックは暗号化されますが、バックエンドのSSL証明書の有効性が確認されていません。
チューブレス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.