WebArenaでHTTPS対応のプロキシをたててみる!

ちょっと仕事でプロキシを使いたい場面が出てきたので

WebArenaでHTTPS対応なプロキシをたてる手順をメモ!

既に断片的に色々な情報はあるのですが

「WebArena」で「HTTPS対応して」「簡単に」

とかいろいろ条件考えるとなかなかまとまってなかったので

後でいっぱい作ろうと思った時に悩まないように!

 

とりあえずWebArena契約!

まずは最安値の400円弱ぐらいのプランを契約して

インスタンスを立てます。

一番

わかりやすいのはこちらの記事でした。

超初心者がVPSにプロキシサーバーを立ててみました。
完全など素人が背伸びしてVPSにプロキシサーバーを立ててみました。同じように初心者の方の参考になればと思い書き留めました。

とりあえず最安値10個ぐらい使えればいいかなということで

100ポイント?プラン登録しました。

 

セキュリティグループ設定

独自にVPS側でなんかセキュリティ設けてる場合がありますが、

WebArenaはそれみたいですね。

プロキシ用のポートを開けておいてあげないとダメみたいです!

セキュリティグループのセキュリティグループを作成

これ、portって3128以外にした方がいいんですかね?

よくわからんので3128デフォルトで。。

セキュリティ面とかでよくないのかなぁ。

tcp:22,22,ip4:0.0.0.0/0
tcp:80,80,ip4:0.0.0.0/0
tcp:3128,3128,ip4:0.0.0.0/0

ssh用とか普通にhttpアクセス用とかもあけておかねばならぬらしい。

次はその下の

キーペア作成

(手順は先ほどの参考サイト様とほぼ一緒です。)

ダウンロードされるので適切に保管

マシンイメージ作成

一番上の10ポイントの

新1G-SSDタイプ(KVM)

セキュリティグループを選択済みの方に追加

これで起動すると

インスタンスてとこ見れば起動してるはず!

 

IPが必要なのでどっかに控えておく。

これ、思ったんですけどインスタンス潰してまた作り直したらIP変わるんですかね?

プロキシ使う上ではそこ結構重要ですよね。。

 

ここまで準備したら次はいよいよ中身!

 

ssh接続

お好みのやつでssh接続しましょう。

さっき控えたIPに対して接続

鍵はさっきダウンロードしたやつっ

私はputtyを使っているので、

そのまま接続できないためPuTTY Key Generatorで変換します。

キーを読み込んでRSAに設定

save private key

あとはこのppkをputtyの

sshの認証のとこにセットすればOK!

と思ったらssh接続できない。。

何やっても色々形式変えても鍵作り直しても無理。。

しかたないからteratermで普通にやるか!と思ったら

これも出来ない。。

ユーザーはrootでやれと書いてあるのに

なんかパス求められる。。?

いや、秘密鍵使ってるんだけど。。

Ubuntuのデフォルトユーザーはrootじゃなくてubuntu

いや、なんだよそれ。。w

だそうです。

ubuntuでログインしたら接続できました!

こんなところでめちゃめちゃつまずきました。。

 

気を取り直して作業継続!

squidをインストール

さて、ここからはUbuntuなので

Ubuntu LinuxにHTTPSをサポートするSquidをインストールする
Ubuntu LinuxでHTTPSサポート付きSquidをインストールする方法を学びます。

今度はこちらの記事を参考に!

なんかUbuntuだと面倒らしい。。

とりあえずroot(ubuntu)ログインするには

パスが必要なのですが

これがインスタンスの

i-xjfdafa

みたいになってる

i-をのぞいた部分がパスになってるらしいです

依存パッケージインストール

apt-get install -y libexpat1-dev libxml2-dev pkg-config libnetfilter-conntrack-dev nettle-dev libgnutls28-dev dh-apparmor
apt install -y openssl devscripts build-essential fakeroot libssl-dev libldap2-dev libpam0g-dev

wget http://www.squid-cache.org/Versions/v4/squid-4.5.tar.gz
tar -zxvf squid-4.5.tar.gz
cd squid-4.5
./configure –with-default-user=proxy –with-openssl –enable-ssl-crtd

make

make install

いやぁ、そこそこいいスペックにしてるさくらVPSに比べると

やっぱり最低スペックのWebArenaだとビルドとか遅いですね。。

終わったら

updatedb

cnfファイルはコメント多くて邪魔なので一回

mv /etc/ssl/openssl.cnf /etc/ssl/openssl.cnfback

vim /etc/ssl/openssl.cnf

HOME = .
#oid_section = new_oids[ new_oids ] tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7

[ ca ]

default_ca = CA_default # The default ca section

[ CA_default ]

dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
# several certs with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extensions to add to the cert
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
policy = policy_match

[ policy_match ]

countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional[ policy_anything ] countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ req ]

default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extensions to add to the self signed cert
string_mask = utf8only

[ req_distinguished_name ]

countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64

[ req_attributes ]

challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name[ usr_cert ] basicConstraints=CA:FALSE
nsComment = “OpenSSL Generated Certificate”
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_req ]

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]

subjectKeyIdentifier=hash
keyUsage = cRLSign, keyCertSign

authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true

[ crl_ext ]

authorityKeyIdentifier=keyid:always

[ proxy_cert_ext ]

basicConstraints=CA:FALSE
nsComment = “OpenSSL Generated Certificate”
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

[ tsa ]

default_tsa = tsa_config1 # the default TSA section

[ tsa_config1 ]

dir = ./demoCA # TSA root directory
serial = $dir/tsaserial # The current serial number (mandatory)
crypto_device = builtin # OpenSSL engine to use for signing
signer_cert = $dir/tsacert.pem # The TSA signing certificate
# (optional)
certs = $dir/cacert.pem # Certificate chain to include in reply
# (optional)
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
signer_digest = sha256 # Signing digest to use. (Optional)
default_policy = tsa_policy1 # Policy if request did not specify it
# (optional)
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory)
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
clock_precision_digits = 0 # number of digits after dot. (optional)
ordering = yes # Is ordering defined for timestamps?
# (optional, default: no)
tsa_name = yes # Must the TSA name be included in the reply?
# (optional, default: no)
ess_cert_id_chain = no # Must the ESS cert id chain be included?
# (optional, default: no)

なんかこんな感じでまず作って

それぞれ設定していきます。

必要なSSLフォルダインフラストラクチャを作成します。

mkdir /usr/local/squid/etc/ssl_cert -p
chown proxy:proxy /usr/local/squid/etc/ssl_cert -R
chmod 700 /usr/local/squid/etc/ssl_cert -R
cd /usr/local/squid/etc/ssl_cert

自己署名証明機関を作成します。

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem

DER形式を使用して自己署名証明機関の証明書をエクスポートします。

openssl x509 -in myCA.pem -outform DER -out myCA.der

SSLデータベースを作成

/usr/local/squid/libexec/security_file_certgen -c -s /usr/local/squid/var/logs/ssl_db -M 4MB

chown proxy:proxy /usr/local/squid/var/logs/ssl_db -R

 

証明書をクライアントにインストール

これは。。後でnginxに設定してあげればいいのかな。

とりあえず飛ばして次やっておきますっ

 

squidの設定

一旦設定ファイルをバックアップ

mv /usr/local/squid/etc/squid.conf /usr/local/squid/etc/squid.confback

vim /usr/local/squid/etc/squid.conf

acl localnet src 192.168.0.0/24
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 ssl-bump cert=/usr/local/squid/etc/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /usr/local/squid/libexec/security_file_certgen -s /usr/local/squid/var/logs/ssl_db -M 4MB
coredump_dir /usr/local/squid/var/cache/squid
cache_dir ufs /usr/local/squid/var/cache/squid 1000 16 256 # 1GB as Cache
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

# 匿名化

forwarded_for off

request_header_access X-Forwarded-For deny all

request_header_access Via deny all

request_header_access Cache-Control deny all

こいつを入力

 

権限設定

chown -R proxy:proxy /usr/local/squid -R

キャッシュフォルダ作成

/usr/local/squid/sbin/squid -z

これで後は

/usr/local/squid/sbin/squid -d 10

で起動するはず。。!やっとか。。

後は実際動かせるかテストですね。

 

コメント

タイトルとURLをコピーしました