如何搭建https代理?
1 HTTPS代理问题很大,正常的代理应该是建立一个隧道,proxy 收到请求之后,向 server 发送HTTP/11 200 Connection established,然后直接转发双方通信。这样 server 一定会知道 client 在 proxy 后面。
如果 proxy 假装是 client,那就是中间人攻击了。正常来讲,你不可能获得 client 访问的 URL 到底是什么。解决方法也许可以自签一个证书?
2 浏览器使用代理服务器设置时候,发给 proxy 的内容和没有使用发给 server 的内容是不同的。起码据我所知,直接访问一般会是 GET / HTTP/11而发给 proxy 的会带着域名。题主所说 header 那个不知道。所以需要确认一下。而且,HOST 那个字段具体什么含义我现在还搞不清楚,正确的 proxy 到底要根据请求的 path 建立连接还是HOST?有知道的请告诉我。。。而且坑爹的是不同浏览器的 HOST 还有点不同。记得https时候 Firefox 还是 Opera 的 HOST 里会带:443。。。所以不能确定到底有多少坑
3 有一种和题主需求类似的实现,Interception proxying,Interception proxying 对 client 来说假装是 server,对 server 来说假装是 client。但是据 polipo 的作者说法,这种实现问题很大,不好说是不是能保证和协议兼容:
Interception proxying is a fundamentally broken design (see for
example this
posting and
RFC 3143,
Section 222), and will not be supported by Polipo
不过,题主这种需求肯定有人想过。多 Google 一下应该有可用的、不完美的方案,但是既然标签里加了 VPS,我猜其实只是想找个好用的 FQ 方法吧?
HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解
密,因此,所传送的数据不容易被网络黑客截获和破解。本文介绍HTTPS的三种实现方法
。
方法一 静态超链接
这是目前网站中使用得较多的方法,也最简单。在要求使用SSL进行传输的Web网页链接
中直接标明使用HTTPS协议,以下是指向需要使用SSL的网页的超链接:
<a href=“https://192168100100/ok/securePagejsp”>SSL例子</a>
需要说明的是,在网页里的超链接如果使用相对路径的话,其默认启用协议与引用该超
链接的网页或资源的传输协议相同,例如在某超链接“https://192168100100/ok/l
oginjps”的网页中包含如下两个超链接:
<a href=“/bessl/examjsp”>SSL链接</a>
<a href=“http://192168100100/notssl/indexjsp”>非SSL链接
那么,第一个链接使用与“https://192168100100/ok/loginjsp”相同的传输协议
HTTPS,第二个链接使用本身所标识的协议HTTP。
使用静态超链接的好处是容易实现,不需要额外开发。然而,它却不容易维护管理; 因
为在一个完全使用HTTP协议访问的Web应用里,每个资源都存放在该应用特定根目录下的
各个子目录里,资源的链接路径都使用相对路径,这样做是为了方便应用的迁移并且易
于管理。但假如该应用的某些资源要用到HTTPS协议,引用的链接就必须使用完整的路径
,所以当应用迁移或需要更改URL中所涉及的任何部分如:域名、目录、文件名等,维护
者都需要对每个超链接修改,工作量之大可想而知。再者,如果客户在浏览器地址栏里
手工输入HTTPS协议的资源,那么所有敏感机密数据在传输中就得不到保护,很容易被黑
客截获和篡改!
方法二 资源访问限制
为了保护Web应用中的敏感数据,防止资源的非法访问和保证传输的安全性,Java Serv
let 22规范定义了安全约束(Security-Constraint)元件,它用于指定一个或多个We
b资源集的安全约束条件;用户数据约束(User-Data-Constraint)元件是安全约束元件
的子类,它用于指定在客户端和容器之间传输的数据是如何被保护的。用户数据约束元
件还包括了传输保证(Transport-Guarantee)元件,它规定了客户机和服务器之间的通
信必须是以下三种模式之一:None、Integral、Confidential。None表示被指定的Web资
源不需要任何传输保证;Integral表示客户机与服务器之间传送的数据在传送过程中不
会被篡改; Confidential表示数据在传送过程中被加密。大多数情况下,Integral或Co
nfidential是使用SSL实现。
这里以BEA的WebLogic Server 61为例介绍其实现方法,WebLogic是一个性能卓越的J2
EE服务器,它可以对所管理的Web资源,包括EJB、JSP、Servlet应用程序设置访问控制
条款。假设某个应用建立在Weblogic Server里的/mywebAPP目录下,其中一部分Servle
ts、JSPs要求使用SSL传输,那么可将它们都放在/mywebAPP/sslsource/目录里,然后编
辑/secureAPP/Web-INF/webxml文件,通过对webxml的设置可达到对Web用户实现访问
控制。
当Web用户试图通过HTTP访问/sslsource目录下的资源时,Weblogic Server就会查找we
bxml里的访问约束定义,返回提示信息:Need SSL connection to access this reso
urce。资源访问限制与静态超链接结合使用,不仅继承了静态超链接方法的简单易用性
,而且有效保护了敏感资源数据。然而,这样就会存在一个问题: 假如Web客户使用HT
TP协议访问需要使用SSL的网络资源时看到弹出的提示信息: Need SSL connection to
access this resource,大部分人可能都不知道应该用HTTPS去访问该网页,造成的后果
是用户会放弃访问该网页,这是Web应用服务提供商不愿意看到的事情。
方法三 链接重定向
综观目前商业网站资源数据的交互访问,要求严格加密传输的数据只占其中一小部分,
也就是说在一个具体Web应用中需要使用SSL的服务程序只占整体的一小部分。那么,我
们可以从应用开发方面考虑解决方法,对需要使用HTTPS协议的那部分JSPs、Servlets或
EJBs进行处理,使程序本身在接收到访问请求时首先判断该请求使用的协议是否符合本
程序的要求,即来访请求是否使用HTTPS协议,如果不是就将其访问协议重定向为HTTPS
,这样就避免了客户使用HTTP协议访问要求使用HTTPS协议的Web资源时,看到错误提示
信息无所适从的情况,这些处理对Web客户来说是透明的。
实现思想是:首先创建一个类,该类方法可以实现自动引导Web客户的访问请求使用HTT
PS协议,每个要求使用SSL进行传输的Servlets或JSPs在程序开始时调用它进行协议重定
向,最后才进行数据应用处理。
J2EE提供了两种链接重定向机制。第一种机制是RequestDispatcher接口里的forward()
方法。使用MVC(Model-View-Controller)机制的Web应用通常都使用这个方法从Servlet
转移请求到JSP。但这种转向只能是同种协议间的转向,并不能重定向到不同的协议。第
二种机制是使用HTTPServletReponse接口里的sendRedirect()方法,它能使用任何协议
重定向到任何URL,例如:
BeSslResponsesendRedirect(“https://192168100100/order”);
此外,我们还需使用到Java Servlet API中的两个方法:ServletRequest接口中的getS
cheme(),它用于获取访问请求使用的传输协议;HTTPUtils类中的getRequestUrl(),它
用于获取访问请求的URL,要注意的是该方法在Servlet 23中已被移到HTTPServletReq
uest接口。
以下是实现协议重定向的基本步骤:
1 获取访问的请求所使用的协议;
2 如果请求协议符合被访问的Servlet所要求的协议,就说明已经使用HTTPS协议了,不
需做任何处理;
3 如果不符合,使用Servlet所要求的协议(HTTPS)重定向到相同的URL。
例如,某Web用户使用HTTP协议访问要求使用HTTPS协议的资源BeSslServlet,敲入“UR
L:http://192168100100/BeSslServlet”,在执行BeSslServlet时首先使用Proces
sSslServlet.processSsl()重定向到https://192168100100/BeSslServlet,然后
BeSslServlet与客户浏览器之间就通过HTTPS协议进行数据传输。
以上介绍的仅是最简单的例子,是为了对这种重定向的方法有个初步的认识。假如想真
正在Web应用中实现,还必须考虑如下几个问题:
● 在Web应用中常常会用到GET或Post方法,访问请求的URL中就会带上一些查询字串,
这些字串是使用getRequesUrl()时获取不到的,而且在重定向之后会丢失,所以必须在
重定向之前将它们加入到新的URL里。我们可以使用requestgetQueryString()来获取G
ET的查询字串,对于Post的Request参数,可以把它们转换成查询串再进行处理。
● 某些Web应用请求中会使用对象作为其属性,必须在重定向之前将这些属性保存在该
Session中,以便重定向后使用。
● 大多数浏览器会把对同一个主机的不同端口的访问当作对不同的主机进行访问,分用
不同的Session,为了使重定向后保留使用原来的Session,必须对应用服务器的Cookie
域名进行相应的设置。
以上问题均可在程序设计中解决。
通过程序自身实现协议重定向,就可以把要求严格保护的那部分资源与其他普通数据从
逻辑上分开处理,使得要求使用SSL的资源和不需要使用SSL的资源各取所需,避免浪费
网站的系统资源。
SSL证书安装之前的注意事项:
(1)选择合适的SSL证书;确定是否需要单个,多域或通配符证书:
1、单个证书将用于单个域
2、多域证书将用于多个域
3、通配符证书适用于具有许多动态子域的安全域
目前1024位的证书加密比较弱,很容易被破解,谷歌也强烈推荐使用带有2048位密钥的证书。
(2)需要从可信的证书办法机构CA获取服务器证书。
(3)必须在WEB服务器上安装服务器证书。
(4)必须在WEB服务器上启用SSL功能。
(5)客户端(浏览器端)必须同WEB服务器信任同一个证书认证机构,即需要安装CA证书。
SSL证书安装之后的注意事项:
(1)SSL证书安装之后需要将网站类使用http链接改为https
(2)需要在百度站长平台进行https认证
至于SSL证书安装的步骤,可以查找一些教程,或者寻找专业人员帮助安装。
1.本地搭建测试服务器-IIS如果读者现在正在设计网站,为了测试,要在自己的电脑上通过IP访问本地站点才能达到最佳的测试效果。因此会涉及安装IIS的相关内容。但是,Windows7系统默认是没有安装IIS管理工具的,需要调用IIS的安装程序进行安装。
(1)首先确认本地计算机是否安装IIS打开控制面板找到管理工具,如图4所示。确认管理工具列表里面没有IIS,然后进入IIS安装的步骤,如图5所示。1)首先,单击开始→控制面板。
2)在控制面板里找到并单击:程序和功能,如果你找不到的话,可以更改一个查看方式,如图6所示。3)打开后,会看到很多程序,这些都是系统安装的第三方程序,而要添加系统自带的功能程序,所以在左上角找到并单击:打开或关闭Windows功能,如图7所示。
4)系统会检索一会,很快就显示出来了,勾选就是系统已经打开的功能了,找到Internet信息服务,并在其前面的复选框打钩,这个钩是灰色的,是因为默认情况下Internet信息服务里面的功能并没有全部选择上的意思,当然,可以单击其前面的+号细看里面的各个子功能,如图8所示。5)单击“确定”按钮后,系统就会配置并添加该功能,如图9所示。6)完成之后是没有提示的,返回程序和功能界面。
下面来看看是否添加了该功能,如图10所示。
执行:开始→管理工具,找到Internet信息服务(IIS)管理器,就证明已经添加了该功能了。
配置IIS:
1)安装好了后,当然还要做些设置的,为了以后更方便使用,主要修改三个地方:
①网站名称。
②物理路径。
③端口。2)首先,我们打开IIS,如图11所示。边框的+号点开。找到:DefaultWebSite,单击右键。执行管理网站→高级设置,如图12所示。3)在高级设置里,网站名称和IP端口都是灰色的,无法更改。我们先来修改网站的物理路径吧,如图13所示。
4)选择好要设置的路径后,再确定,会返回上一层,如图14所示。5)现在再来修改网站名称,在DefaultWebSite处单击右键,选择:重命名。输入要用的名字,如图15所示。6)网站名称也可以是中文的,如图16所示。
7)最后,来修改IP地址和端口,先说明两点:
①网站的默认端口是:80,如果不是有特别要求的话,可以选择默认即可。
②IP地址,如果服务器是通过防火墙(或者路由器)直接发布到外网给客户访问的话,也是不用在这里设置IP地址都可以的。但我们现在是在内网测试,同事之间访问(即没有做商品映射)的,所以这里应该要设置一下IP地址。操作,在网站名称那单击右键,选择:编辑绑定,如图17所示。8)然后选中并编辑(图18)。
9)编辑的内容不多,单击“全部未分配”右边的下拉三角形。并选择本地计算机的IP地址,在本例中为:1921680178,如图19所示。3.申请网站公网空间服务器给网站申请完地址和名称后,就需要为网站在网络上申请出相应的空间。网站是建立在网络服务器上的一组电脑文件,它需要占据一定的硬盘空间,这就是一个网站所需的网站空间。一般来说,一个企业网站的基本网页文件和网页大概需要100Mb空间,加上产品照片和各种介绍性页面,一般在500Mb以下。另外,企业需要存放反馈信息和备用文件的空间。所以企业网站总共需要500Mb~1000Mb的网站空间(即虚拟主机空间)。
想建立一个网站,就要选择适合自身条件的网站空间。目前主流的有4种网站空间选择形式。
1)购买个人服务器:服务器空间大小可根据需要增减服务器硬盘空间,然后选择好ISP商,将服务器接入Internet,将网页内容上传到服务器中,这样就可以访问网站了。服务器管理一般有两种办法,即服务器托管和专线接入维护。
2)租用专用服务器:就是建立一个专用的服务器,该服务器只为用户使用,用户有完全的管理权和控制权。中小企业用户适合于这种vps服务器,但个人用户一般不适合这种服务,因为其费用很高。
3)使用虚拟主机:这种技术的目的是让多个用户共用一个服务器,但是对于每一个用户而言,感觉不到其他用户的存在。在此情况下该服务器要为每一个用户建立一个域名、一个IP地址、一定大小的硬盘空间、各自独立的服务。这一技术参考了操作系统中虚拟内存的思想,使得有限的资源可以满足较多的需求,且使需求各自独立,互不影响。由于这种方式中多个用户共同使用一个服务器,所以价格是租用专用服务器的十几分之一,而且可以让用户有很大的管理权和控制权。可以建立邮件系统的(数量上有限制)个人FTP、WWW站点、提供CGI支持等。
4)免费网站空间:这种服务是免费的。用户加入该ISP后,该ISP商会为用户提供相应的免费服务,不过权限会受到很大限制,很多操作都不能够使用。
用户可以根据需要来选择正确的方式。如果想架构WWW网站,那么只要加入一个ISP就可以得到一个WWW网站。如果想尝试做网管,则可以考虑申请虚拟主机服务,而且现在租用虚拟主机的费用并不高。如果想建立很专业的商业网站,建议最好租用服务器或购买自己的服务器。
下面以阿里云为例讲解怎么购买网络主机空间。
在地址栏输入:https://wanwangaliyuncom/hosting/打开后如图20所示,选择相应的服务如图21所示。
选择好后可以看到服务器具体参数(图22、图23)。
确认购买此款主机,单击立即购买。进入网络付款的状态。网络付款方式可以选择支付宝和各家银行的网银等方式进行网站。
网站空间成功拿到以后,如何把文件传上去。让网页文件正确的显示在远程主机上。这个一般使用FTP上传方式实现。
4.使用FTP工具上传网页购买了虚拟主机后,可以从主机商那边获得主机空间的FTP地址、用户名和密码。通过FTP地址和密码,就可以开始上传网站了。FTP上传工具可使用FlashFXP工具。下载解压后并打开后,出现界面如图24所示:选择菜单上的“站点”->“站点管理器”,如图25所示:单击“新建站点”按钮,在新出的窗口输入网站名称,如输入“我的网站”,单击“确定”按钮,如图26所示。建立新站点后,下一步需要做的是输入“IP地址”“用户名称”“密码”,其他设置不需要填写,如图27所示,然后单击“连接”按钮。IP地址、用户名称、密码正确的话,就可以连接到网站空间了,参考如图28所示:
传送完毕后可以再浏览器上进行页面刷新,即可看到打开的页面或者进行内容更新的页面。
图4
图5
图6
图7
图8
图9
图10
图11
图12
图13
图14
图15
图16
图17
图18
图19
图20
图21
图22
图23
图24
图25
图26
图27
图28
0条评论