
Debian マシンでは Squid と Apache が動作しています。HTTPs は Certbot (Lets Encrypt) で有効化されています。
複数のドメイン (Vhost) があり、すべてのドメインに 1 つの IP アドレスを使用しています。
Apache はポート 81 (HTTP) と 444 (HTTPS) でリッスンしています。
私の squid.conf は次のようになります:
# Incoming Connections
http_port 80 accel
cache_peer localhost parent 81 0 no-query originserver
https_port 443 acceldefaultsite=yourwebserver vhost
cache_peer localhost parent 444 0 no-query originserver
# ACL
http_access allow all
# Allowed Ports
acl SSL_ports port 443 # https
acl Safe_ports port 80 # http
acl CONNECT method CONNECT
問題: 上記の設定でサービスを開始すると、Squid は HTTPS を有効にするための証明書を要求します。
しかし、ドメインごとに異なる証明書を使用しています。Squid に 443 を 444 localhost にリダイレクトするように強制するにはどうすればよいでしょうか?
答え1
SquidはHTTPSを有効にするために証明書を要求する
これがHTTPSの基本的な考え方です。確かに証明書で保護されたコンテンツを提供するには証明書が必要です。そうでない場合は、http プロキシを使用せず、代わりに NAT または TCP プロキシ (UPSTREAM プロバイダーを使用した nginx など) を使用します。
しかし、ドメインごとに異なる証明書を使用します。
これが SSL (TLS) の考え方であり、異なるプロパティを持つ異なるリスナーを構成できる (つまり、構成する必要がある) 理由です。または、SSL を終了 (つまり、オフロード) せずに TCP 転送のみを使用します。
squid3
vhostでは、構成は次のように行われます。
https_port serverone.com:443 cert=/etc/ssl/serverone.pem vhost
https_port servertwo.com:443 cert=/etc/ssl/servertwo.pem vhost
cache_peer lanserverone parent 80 0 name=lanserverone no-query originserver
cache_peer_domain lanserverone serverone.com
cache_peer lanservertwo parent 80 0 name=lanservertwono-query originserver
cache_peer_domain lanservertwo servertwo.com
Squid に 443 を 444 ローカルホストにリダイレクトするように強制するにはどうすればいいですか
Shart の回答: できません。アップストリームで nginx を試すか、ルーターで NAT だけを実行してください。