科学上网

Written on July 17, 2017 View on GitHub

Secure Web Proxy (HTTPS proxy, stunnel)

参考:The Chromium Projects: Secure Web Proxy

这里介绍单纯一个最简化的 squid 服务端配置方式。

这么安装是不合适的,因为默认没带ssl。如果是这么安装的请先卸载。

apt-get install squid

首先安装基本开发包。

apt-get install devscripts build-essential fakeroot libssl-dev

然后下载apt上的源码,仅仅添加一个参数然后 build

apt-get source squid
cd squid3-3.5.12
vim debian/rules

		--with-default-user=proxy \
		--with-openssl

./configure
debuild -us -uc -b

不出意外的话,可以去上级目录安装 deb 包了。

dpkg -i squid_3.5.12-1ubuntu7.3_amd64.deb squid-common_3.5.12-1ubuntu7.3_all.deb

你(当然)需要一个证书,证书必须绑定 IP 或者域名。 如果用 IP 访问,则替换 {IP} 为服务器 IP 地址。如果用域名访问,那么所有的 subjectAltName=IP: 都应该换成 subjectAltName=DNS:

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/C=US/CN={IP}" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=IP:{IP}"))

rm -r demoCA
mkdir demoCA && cd demoCA && mkdir newcerts && touch index.txt && touch serial && echo 01 > serial && cd ..

openssl ca -policy policy_anything -days 3650 -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extfile <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=IP:{IP}")) -extensions SAN
cat ca.crt >> server.crt

好了,证书准备好了,把他们放到 /opt/keys/ 下,或者任何一个你喜欢的地方。

https_port 443 cert=/opt/keys/server.crt key=/opt/keys/server.key
acl world src all
http_access allow world

这样配置好的是匿名的 HTTPS 代理。本机安装 ca.crt,谷歌浏览器可以直接使用。 别人如果想盗用,则需要安装你的 CA 证书。所以,防君子不防小人。但是科学上网是没有问题的。