web-dev-qa-db-ja.com

NGINXはSNIをサポートしていますか、サポートしていませんか?

[〜#〜] edit [〜#〜]新しい質問: NGINXはTLSリクエストを検査してHAProxy(など)のようなSNIを探すことができますか)ありますか?

私が読んだこと(そして私は told でした)によると、NGINXはSNIをサポートするべきではなく、SSL透過リバースプロキシ用のHAProxyに行くべきです。いいね。ただし、 this は、NGINXが実際にSNIをサポートしていることを示唆しているようですが、有用なドキュメントのスクラップが1つも見つかりません。つまり、私が見つけることができたすべては、要求のホスト名と一致させるために、NGINXに証明書を提供する必要があることを意味していました。しかし、それはまさにSNIが解決しようとしている問題ではありませんか?

今、私は同じIPアドレスでかなりの数の異なるHTTPSサイトを実行し始めています。これは、多くの異なる構成で同じ情報を維持する場合に負担がかかるため、私がより良い状況かどうか知りたいのですがNGINXを捨てて、さらに別のソフトウェア(別名HAProxy)を学ぶか、実際にNGINXに固執できるかどうか、そしてその方法。

理想的には、プロキシが暗号化されたトラフィックに一種の透過的なトンネルを提供し、クライアントとバックエンドサーバー(たとえば、Apacheまたは実行している他のアプリケーション)のみがそれを復号化できるようにしたい-つまり、リバースプロキシの構成で証明書情報を保持する必要はありません。ここから行けるという意味

server {
    listen 443 default ssl;

    server_name example.org;
    add_header X-Clacks-Overhead "GNU Terry Pratchett";

    ssl on;
    ssl_certificate         /etc/le_certs/example.org/live/example.org/fullchain.pem;
    ssl_certificate_key     /etc/le_certs/example.org/live/example.org/privkey.pem;

    location / {
        proxy_pass_header   Server;
        proxy_set_header    Host $Host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          https://exampleapp;
    }
}

ここまで

server {
    listen 443 default ssl;

    server_name example.org;
    add_header X-Clacks-Overhead "GNU Terry Pratchett";

    location / {
        proxy_pass_header   Server;
        proxy_set_header    Host $Host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          https://exampleapp;
    }
}

プロキシのコンテナが証明書にまったくアクセスする必要がないという追加の利点があります(これはDockerのセットアップであり、マウントされたボリュームが非常に多く、メンテナンスがさらに必要になるためです)。

3
Morpheu5

SNIサポートの「不足」を誤解している。

まず、nginxは一般に "wildcard" SSL設定 で問題ありません。サポートの問題は SNIを処理できない古いクライアント(つまりブラウザ) にあります。

1
Colt