web-dev-qa-db-ja.com

Haproxy:自己署名証明書付きのSSL暗号化バックエンド

私はHAProxyがSSLを終了するように構成しているので、購入したSSL証明書を構成する場所は1つだけです。ただし、バックエンドサーバーへの接続もSSLで暗号化することをお勧めします。

私が見つけた1つの提案は、バックエンドサーバーで自己署名証明書を作成し、各サーバー行で「何も検証しない」を設定することです。 ...したがって、ブラウザからHAProxyへの接続には、購入した公式のSSL証明書が使用されますが、バックエンドサーバーへのHAProxyへの接続には、自己署名証明書が使用されます。自己署名証明書の利点は、無料で更新やメンテナンスが不要なことです(私は有効期限をはるかに先に設定でき、毎年新しいものをインストールする必要を回避できます)。ただし、当然のことながら、これはMITM攻撃のバックエンドを開くものであり、私が読んだいくつかのソースでは推奨されていません。

バックエンドサーバーで自己署名証明書を使用できるようにHAProxyを構成できますが、おそらくHAProxyサーバーで自己署名証明書をホワイトリストに登録できますか? ...したがって、HAProxyからバックエンドへの接続は暗号化され、MITM攻撃に対して脆弱ではなく、HAProxyはバックエンドサーバーからの自己署名証明書を信頼することを知っています。

私が説明していることは可能ですか?私はHAProxy SSLターミネーションが初めてなので、助言をいただければ幸いです。

私の構成の関連部分は次のとおりです:

frontend www-in
    bind *:80
    bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3

    mode http
    default_backend https-backend
    # force redirect to https
    redirect scheme https if !{ ssl_fc }

backend https-backend
    balance leastconn
    server web1 1.1.1.1:443 check ssl verify none
    server web2 2.2.2.2:443 check ssl verify none

    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
6
Joe J

この質問は、実際にはHAProxyにリンクしているのではなく、証明書および認証局の管理全般に関連しています。

これを述べていないため、使用しているOSはわかりませんが、それがLinuxフレーバーである場合(ただし、以下はDebianおよび派生物に適用されます):

  • パッケージca-certificatesがインストールされていることを確認してください。

  • 独自の 認証局 (ca)を使用して証明書を作成しています。

  • このCAのyour ca root certを取得し、/usr/local/share/ca-certificates/name-of-your-ca/の中に入れます。 (フォルダname-of-your-caを自分で作成する必要がある場合があります。)your ca root cert.crt拡張子が付いていることを確認してください。

    (デフォルトでは、/usr/local/share/ca-certificates/root:staffが所有するため、Sudoまたはrootを使用してこれを行います。)

  • update-ca-certificatesを実行します(Sudo/as rootを使用)。

  • 実行後、/etc/ssl/cert/your-ca-root.pemにシンボリックリンクされたファイル/usr/local/share/ca-certificates/name-of-your-ca/your-ca-root.crtが存在するはずです。

  • HAProxyでの検証と利益を有効にします。

5
gf_