怎么配置HTTP/HTTPS自动加密上网
本篇內(nèi)容介紹了“怎么配置HTTP/HTTPS自動加密上網(wǎng)”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
方案介紹
涉及到的軟件
-
BIND: 一個流行的域名解析服務(wù)器,我們可以設(shè)置哪些域名需要走加密線路。 -
Stunnel: 使用TLS對tcp協(xié)議進(jìn)行加密,也就是對tcp建立一條加密線路。 -
SNI Proxy: 代理軟件。對于HTTP協(xié)議,它可以根據(jù)Host請求頭解析得出目標(biāo)站IP;對于HTTPS協(xié)議,它可以根據(jù)SNI擴(kuò)展中的域名解析得出目標(biāo)站IP。
此方案優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
無需手動設(shè)置任何代理,就能夠自動加密代理特定網(wǎng)站的HTTP或HTTPS協(xié)議
相對于我們常用的ssh隧道,ssh隧道是單路,而此方案是支持多并發(fā)連接,可以極大加速網(wǎng)站訪問。
缺點(diǎn):
對于代理HTTPS協(xié)議,需要發(fā)起HTTPS連接的客戶端,比如瀏覽器支持TLS的SNI擴(kuò)展。好消息是目前瀏覽器幾乎都支持此擴(kuò)展,但對于一些非瀏覽器的客戶端,不支持SNI擴(kuò)展。我們只能設(shè)置正向代理來解決此問題。
方案原理
原理介紹:
1、首先我們需要準(zhǔn)備三臺服務(wù)器,一臺是內(nèi)網(wǎng)DNS服務(wù)器(安裝bind),一臺是內(nèi)網(wǎng)代理服務(wù)器(安裝stunnel),另一臺國外服務(wù)器(安裝stunnel,sniproxy)。
2、我們還需要設(shè)置DNS為內(nèi)網(wǎng)的DNS,并在內(nèi)網(wǎng)bind dns設(shè)置谷歌域名解析的IP為內(nèi)網(wǎng)代理服務(wù)器
3、當(dāng)我們訪問谷歌網(wǎng)站時,首先會向內(nèi)網(wǎng)DNS服務(wù)器發(fā)送DNS A記錄查詢,此時內(nèi)網(wǎng)DNS服務(wù)器會返回內(nèi)網(wǎng)代理服務(wù)器的IP。
4、瀏覽器得到谷歌域名的解析IP后(即內(nèi)網(wǎng)代理服務(wù)器的IP),會向內(nèi)網(wǎng)代理服務(wù)器發(fā)送HTTP或HTTPS請求。
5、此時內(nèi)網(wǎng)代理服務(wù)器(即stunnel),會接收到請求,經(jīng)過加密,把請求轉(zhuǎn)發(fā)到國外服務(wù)器(stunnel)的指定端口上。
6、國外服務(wù)器(stunnel)接收到來自國內(nèi)服務(wù)器(stunnel)的加密數(shù)據(jù)后,經(jīng)過解密,把請求轉(zhuǎn)發(fā)到sniproxy。
7、sniproxy再根據(jù)HTTP Host請求頭或者HTTPS sni擴(kuò)展的域名解析出谷歌服務(wù)器的IP,并把請求轉(zhuǎn)發(fā)給谷歌服務(wù)器。
8、谷歌服務(wù)器收到來自sniproxy發(fā)送的請求后,馬上返回網(wǎng)頁內(nèi)容給sniproxy,sniproxy再原路返回?cái)?shù)據(jù)給瀏覽器。
方案實(shí)施
由于時間有限,我們僅在Ubuntu server 12.04演示安裝。
環(huán)境介紹
系統(tǒng):Ubuntu server 12.04
內(nèi)網(wǎng)DNS IP: 10.96.153.201(主),10.96.153.204(從)
內(nèi)網(wǎng)代理服務(wù)器: 10.96.153.204
國外服務(wù)器IP: 1.2.3.4
安裝BIND9
1、在主DNS和從DNS安裝bind,即10.96.153.201(主),10.96.153.204(從)。
wgethttp://www.isc.org/downloads/file/bind-9-10-0b1-2/?version=tar.gz-Obind-9-10-0b1-2.tar.gz tarxzfbind-9-10-0b1-2.tar.gz cdbind-9-10-0b1-2 ./configure--prefix=/usr/local/bindmake&&makeinstall
2、配置主DNS服務(wù)器(10.96.153.201)
2.1、生成/usr/local/bind/etc/rndc.key密鑰文件
/usr/local/bind/sbin/rndc-confgen-a-krndckey-c/usr/local/bind/etc/rndc.key
2.2、編輯/usr/local/bind/etc/named.conf,寫入如何內(nèi)容:
include"/usr/local/bind/etc/rndc.key";
controls{inet127.0.0.1port953allow{127.0.0.1;}keys{"rndckey";};};
logging{
channeldefault_syslog{sysloglocal2;severitynotice;};
channelaudit_log{file"/var/log/bind.log";severitynotice;print-timeyes;};
categorydefault{default_syslog;};
categorygeneral{default_syslog;};
categorysecurity{audit_log;default_syslog;};
categoryconfig{default_syslog;};
categoryresolver{audit_log;};
categoryxfer-in{audit_log;};
categoryxfer-out{audit_log;};
categorynotify{audit_log;};
categoryclient{audit_log;};
categorynetwork{audit_log;};
categoryupdate{audit_log;};
categoryqueries{audit_log;};
categorylame-servers{audit_log;};
};
options{
directory"/usr/local/bind/etc";
pid-file"/usr/local/bind/var/run/bind.pid";
transfer-formatmany-answers;
interface-interval0;
forwardonly;
forwarders{202.96.128.166;202.96.134.133;};
allow-query{any;};
};
zone"google.com"{
typemaster;
file"google.com.zone";
allow-transfer{10.96.153.204;};
};
在這個named.conf文件中,我們只需要關(guān)心如下內(nèi)容:
對于options{}區(qū)域,202.96.128.166和202.96.134.133這兩個是ISP提供的本地DNS,需要修改為自己所在ISP的本地DNS。
對于zone “google.com”{}區(qū)域,這里定義了google.com域名的區(qū)域文件google.com.zone,還有允許10.96.153.204(即從DNS)同步區(qū)域文件。
2.3、建立google.com.zone區(qū)域文件:
$TTL3600 @INSOAns1.google.com.hostmaster.google.com.( 2014072015;Serial 3600;Refresh 900;Retry 3600000;Expire 3600);Minimum @INNSns1.google.com. @INNSns2.google.com. ns1INA10.96.153.201 ns2INA10.96.153.204 @INA10.96.153.204 *INA10.96.153.204
對于這個區(qū)域文件:
ns1 IN A 10.96.153.201 指向第一個dns服務(wù)器,即主DNS。
ns2 IN A 10.96.153.204 指向第二個dns服務(wù)器,即從DNS。
@ IN A 10.96.153.204和* IN A 10.96.153.204指向內(nèi)網(wǎng)的代理服務(wù)器(stunnel)。我們只需要修改這三個地方就好了。
3、配置從DNS服務(wù)器(10.96.153.204)
編輯named.conf,寫入如下內(nèi)容
logging{
channeldefault_syslog{sysloglocal2;severitynotice;};
channelaudit_log{file"/var/log/bind.log";severitynotice;print-timeyes;};
categorydefault{default_syslog;};
categorygeneral{default_syslog;};
categorysecurity{audit_log;default_syslog;};
categoryconfig{default_syslog;};
categoryresolver{audit_log;};
categoryxfer-in{audit_log;};
categoryxfer-out{audit_log;};
categorynotify{audit_log;};
categoryclient{audit_log;};
categorynetwork{audit_log;};
categoryupdate{audit_log;};
categoryqueries{audit_log;};
categorylame-servers{audit_log;};
};
options{
directory"/usr/local/bind/etc";
pid-file"/usr/local/bind/var/run/bind.pid";
transfer-formatmany-answers;
interface-interval0;
forwardonly;
forwarders{202.96.128.166;202.96.134.133;};
allow-query{any;};
};
zone"google.com"{
typeslave;
file"google.com.zone";
masters{10.96.153.201;};
};
配置從DNS就簡單得多,只需要寫入如上內(nèi)容到named.conf文件。同樣的,options{}中202.96.128.166和202.96.134.133這兩個是當(dāng)?shù)豂SP本地dns。zone “google.com”{}中10.96.153.201指明主DNS服務(wù)器IP。
4、啟動bind dns服務(wù)器
/usr/local/bind/sbin/named
安裝Stunnel
1、在內(nèi)網(wǎng)代理服務(wù)器和國外主機(jī)安裝stunnel
apt-getinstallstunnel4
2、內(nèi)網(wǎng)代理服務(wù)器stunnel配置
編輯/etc/default/stunnel4,設(shè)置ENABLED=1。
client=yes pid=/etc/stunnel/stunnel.pid [http] accept=80 connect=1.2.3.4:8082 [https] accept=443 connect=1.2.3.4:4433
此配置文件表示,監(jiān)聽了80端口,并把此端口流量轉(zhuǎn)發(fā)到1.2.3.4:8082,監(jiān)聽了443端口,并把此端口流量轉(zhuǎn)發(fā)到1.2.3.4:4433
3、國外服務(wù)器stunnel配置
3.1、生成ssl證書stunnel.pem文件
opensslgenrsa-outkey.pem2048 opensslreq-new-x509-keykey.pem-outcert.pem-days1095 catkey.pemcert.pem>>/etc/stunnel/stunnel.pem
3.2、編輯/etc/stunnel/stunnel.conf文件
client=no [http] accept=1.2.3.4:8082 connect=127.0.0.1:8082 cert=/etc/stunnel/stunnel.pem [https] accept=1.2.3.4:4433 connect=127.0.0.1:4433 cert=/etc/stunnel/stunnel.pem
此配置文件表示,監(jiān)聽了1.2.3.4:8082,并轉(zhuǎn)發(fā)此地址流量到127.0.0.1:8082,監(jiān)聽了1.2.3.4:4433,并轉(zhuǎn)發(fā)給地址流量到127.0.0.1:4433。
3.3、編輯/etc/default/stunnel4,設(shè)置ENABLED=1。
4、啟動stunnel
servicestunnel4start
安裝sniproxy
sniproxy項(xiàng)目地址:https://github.com/dlundquist/sniproxy
1、安裝sniproxy
同樣只演示在ubuntu server 12.04安裝。
1.1、安裝UDNS
mkdirudns_packaging cdudns_packaging wgethttp://archive.ubuntu.com/ubuntu/pool/universe/u/udns/udns_0.4-1.dsc wgethttp://archive.ubuntu.com/ubuntu/pool/universe/u/udns/udns_0.4.orig.tar.gz wgethttp://archive.ubuntu.com/ubuntu/pool/universe/u/udns/udns_0.4-1.debian.tar.gz tarxfzudns_0.4.orig.tar.gz cdudns-0.4/ tarxfz../udns_0.4-1.debian.tar.gz dpkg-buildpackage cd.. dpkg-i*.deb
1.2、安裝sniproxy
apt-getinstallautotools-devcdbsdebhelperdh-autoreconfdpkg-devgettextlibev-devlibpcre3-devlibudns-devpkg-config wgethttps://github.com/dlundquist/sniproxy/archive/master.zip unzipmaster.zip cdsniproxy-master/ dpkg-buildpackage cd.. dpkg-i*.deb
2、配置sniproxy
/etc/sniproxy.conf內(nèi)容如下:
userdaemon
pidfile/var/run/sniproxy.pid
error_log{
syslogdeamon
prioritynotice
}
listen127.0.0.1:8082{
protohttp
tablehttp_hosts
}
tablehttp_hosts{
.**:80
}
listen127.0.0.1:4433{
prototls
tablehttps_hosts
}
tablehttps_hosts{
.**:443
}
此配置文件表示,監(jiān)聽了127.0.0.1:8082地址,并解析http協(xié)議中的Host請求頭為IP,然后轉(zhuǎn)發(fā)請求到此IP;監(jiān)聽了127.0.0.1:4433地址,并解析TLS中SNI擴(kuò)展中的域名為IP,并轉(zhuǎn)發(fā)請求到此IP。
3、啟動sniproxy
sniproxy
總結(jié)
以上是生活随笔為你收集整理的怎么配置HTTP/HTTPS自动加密上网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动画专业艺术里最懂计算机的,美国数字媒体
- 下一篇: 网银怎么开通(银行网银怎么打印回单)