SquidでBasic認証つきオレオレHTTPSプロキシ立てる
Warning
開発用につきセキュリティはガバガバ。プログラム内から使うだけで、ブラウザ等から使うつもりもない。
Squidインストール
sudo yum update
sudo yum -y install squid自己署名証明書作成
散らかるので、適当なディレクトリを作ってその中で作成する。
期限はここでは10年 (3650日) にした。CSRを作るときに色々聞かれるけど、どこかに持ち出す可能性があるならCommon Nameくらいはちゃんと書いといた方がいいかも。
mkdir /path/to/oreore
cd /path/to/oreore
openssl genrsa 2048 > private.key
openssl req -new -key private.key > server.csr
openssl x509 -days 3650 -req -signkey private.key < server.csr > server.crtこれでできた private.key が秘密鍵で、server.crt が証明書。
Basic認証のパスワードファイル作成
ここではユーザー名 hoge、パスワード piyo、保存先は /path/to/passwd とする。
sudo su
echo "hoge:$(openssl passwd -apr1 piyo)" > /path/to/passwdSquidの設定
ここでは待ち受けポートは 8081 とする。
Basic認証に使う /usr/lib64/squid/basic_ncsa_auth は、環境によっては lib64 じゃなくて lib かもしれない。というか basic_ncsa_auth じゃないかもしれない。実在するか先に確認しておくこと。
#-----------------------------------------
# Basic認証
#-----------------------------------------
# 認証プログラムは /usr/lib64/squid/basic_ncsa_auth
# パスワードファイルは /path/to/passwd
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /path/to/passwd
# 一回認証したら2時間は覚えておく
auth_param basic credentialsttl 2 hours
# ユーザー名・パスワードの大文字小文字を気にする
auth_param basic casesensitive on
# 名称「password」で、認証必須のACLを定義
acl password proxy_auth REQUIRED
# ACL「password」にパスすればアクセスさせる
http_access allow password
#-----------------------------------------
# HTTPS設定
#-----------------------------------------
# ポート8081で待ち受け
# 証明書ファイルは /path/to/oreore/server.crt
# 秘密鍵ファイルは /path/to/oreore/private.key
https_port 8081 cert=/path/to/oreore/server.crt key=/path/to/oreore/private.key
# プロキシサーバーのホスト名を隠す
visible_hostname unkown
# 転送元の情報を隠す
forwarded_for off
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
# コアダンプの出力先は /var/spool/squid
coredump_dir /var/spool/squid設定し終わったらサービス再起動する。すでに上がってる場合、地味に停止に30秒くらいかかる。
sudo service squid restart動作確認
ここではプロキシのIPは 111.111.111.111 とする。
cURLでプロキシ挿してどこかにアクセスしてみる。対象はHTTPでもHTTPSでもOK。できればアクセス元のIPアドレスが表示されるサイトだと、ちゃんと挿さってるか真に確認できる。
curl -x https://hoge:piyo@111.111.111.111:8081 --proxy-insecure https://note.kiriukun.comプロキシがオレオレなので --proxy-insecure をつけないとエラーになる。
あと、Windows版cURLではそもそもhttpsプロキシがサポートされてないっぽいので、プロキシとは別のLinuxからじゃないと確認できない。
念のため、プロキシのURLがHTTPだとアクセスできないことも確認する。
curl -x http://hoge:piyo@111.111.111.111:8081 https://note.kiriukun.com以上!
参考にさせていただいた記事
squidで相手先に送信されるプロキシサーバーの情報を隠してみる · mechamogera/MyTips Wiki · GitHub
キリウ君が読まないノート