GeekFactory

int128.hatenablog.com

mod_proxyのフォワードプロキシでHTTPSを許可する書き方

以前にはまったので備忘録として。

  • HTTPSをプロキシする場合はトンネリングとなる*1
  • AllowCONNECT でトンネリングを許可するポートを指定する。
  • <Proxy> を使ってアクセス制御できる。
    • <Proxy> にはトンネリング先のIPアドレス:ポートを書く。
    • Deny/Allow を書くと、アクセス元でアクセス制御できる。
    • リクエストURIではアクセス制御できない。暗号化されたペイロードを読めないので。

設定例

Apache httpd 2.2の例です。

Listen *:9090
<VirtualHost *:9090>
  ProxyRequests on
  AddDefaultCharset off
  AllowCONNECT 443
  <Proxy *>
    Order deny,allow
    Deny from all
  </Proxy>

  # allows HTTPS via CONNECT
  <Proxy 192.168.1.100:443>
    Order deny,allow
    Deny from all
    Allow from 192.168.2.0/24
  </Proxy>

  # allows HTTP
  <Proxy http://192.168.1.100/*>
    Order deny,allow
    Deny from all
    Allow from 192.168.2.0/24
  </Proxy>

  CustomLog logs/internalproxy_access_log combined
  #CustomLog /dev/null combined
</VirtualHost>

*1:もしかしたらmod_proxy単体でMITMみたいなことができるかもしれませんが、知りません。