web-dev-qa-db-ja.com

httpsを使用するときに明確なSNIを非表示にする

IPアドレスa.b.c.dのサーバーがホストしているmultiple SSL Webサイト。

各Webサイトに接続するとき、適切なブラウザーは、example.comなどのSNIと呼ばれる暗号化されていないクリアテキストで宛先ホストを含​​むリクエストを送信します。

SSL接続が成功すると、残りのデータは対応する証明書とともに送信されます。

問題は、ブラウザから送信されたSNIがMITMによってログに記録され、政府によってブロックされることです。

サーバーでアクセスしているWebサイトを相手側が見つけられないようにするにはどうすればよいですか?

(明らかにVPNやプロキシを使用することはありません。)

6
David Refoua

サーバーが適切な証明書を提供する必要がある場合、SNI情報を非表示にすることはできません。 TLS 1.3でこの情報を暗号化することについての議論がありました。しかし、追加の暗号化層を確立する必要があり、接続の確立に追加のオーバーヘッドが追加されるため、このアイデアは放棄されました。それとは別に、この情報はDNSルックアップのために、そしてもちろんサーバーから送信された証明書によっても漏洩する可能性があります。したがって、プライバシーをより適切に保護したい場合は、VPNなどの追加の暗号化レイヤーを自分で使用する必要があります。

詳細はこちらもご覧ください

13
Steffen Ullrich

サーバーでアクセスしているWebサイトを相手側が見つけられないようにするにはどうすればよいですか?

(明らかにVPNやプロキシを使用することはありません。)

主な方法を特定しました。

理論的には、SNIの一部として1つのホスト名を送信し、httpホストヘッダーで別のホスト名を送信できます。ただし、Apacheは少なくとも これを防ぐ です。

SNIがなくてもリクエストを送信できる場合があります。

ターゲットサーバーに、SNIを使用して接続を適切なサーバーにリダイレクトするSSLネットワークアプリケーション(非復号化SSLロードバランサーやリバースプロキシなど)がなく、サーバーにSANまたはそこにホストされているすべてのサービスをカバーするワイルドカード証明書、サーバーはSNIなしでリクエストを処理できる必要があります。

3
Lie Ryan