摆脱浏览器束缚的一项灵活http加密技术

来源:互联网 发布:80端口备案流程 编辑:程序博客网 时间:2024/04/28 21:47

当我们在浏览器的URL栏输入网址时,绝大多数的协议头都是http(如 http://www.csdn.net/),我们知道这样的协议请求是通过明文在网络上传输的,无论是协议请求或是传输数据都可以被截包工具轻易得到并能够分析出用户发送的个人信息,在一些比较敏感的情景下,比如用到金额交易方面的数据时就会用到加密技术,而openssl在这其中则扮演着举足轻重的作用,在web服务器上安装好openssl软件包并做一些相关的配置(网上有很多关于服务器配置openssl,这里不再阐述),而在浏览器上输入https:// (如 https://www.csdn.net/),就可以与服务器建立起安全的加密通信协议,当然在一般的情况下,这已经可以满足的绝大多数的加密情形,但是如果对于更加严密的系统,如在客户端和服务器端应用自己独特的加密算法或加密套件,https这种情形就行不通,因为很多浏览器都是不开源的,比如IE,想加入自己的加密算法几乎是不可能的事情,那我们怎么样才能用http协议(在浏览器的url栏内输入如http://www.csdn.net/)并且达到https的加密效果并且可以适当的加入自己的加密算法呢?
     答案就是运用本地代理,在代理服务器上加密然后传输到Internet,通过代理服务器的数据也是通过openssl与远端web服务器协商的加密握手过程。这样做的好处有两个,一个是在浏览器的url栏内的协议名字是http,第二个就是本地代理可以加入自己的算法更能保证加密的安全性。
     纵观开源加密代理,比较优秀的就属stunnel了,Stunnel是一个自由的跨平台软件,用于提供全局的TLS/SSL服务。针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel可提供安全的加密连接。该软件可在许多操作系统下运行,包括Unix-like系统,以Windows。Stunnel依赖于某个独立的库,如OpenSSL或者SSLeay,以实现下面的TLS或SSL协议。Stunnel由Michal Trojnara 和 Brian Hatch负责维护,遵照GNU通用公共许可证进行发布。官方网站,http://stunnel.mirt.net
      stunnel的最大特点就是它是一款开源软件,融合了开源的openssl技术,使得加密流程的安全性大大增加。
      具体配置:
      stunnel的代码在这里不做阐述,想加入自己算法的朋友请参照openssl与stunnel源码。
      1.stunnel中有一个叫stunnel.conf的配置文件,在这个文件中可以配置如源端口号,目的Ip地址、端口号的信息,在这里可以用源端口号配置stunnel接听的本地端口号是多少,如3128,那么在本地所有发送到3128的信息都会被stunnel截获并加密,然后将密文发送到在这个文件中配置好的目的IP地址和目的端口号。

       stunnel.conf:

       

       cert = stunnel.pem
       socket = l:TCP_NODELAY=1
       socket = r:TCP_NODELAY=1
       client=yes

 

       [http2ssl]
       accept = 3128
       connect = 192.168.0.45:455


       [socks2ssl]
       accept = 4567

       connect =192.168.0.45:455


      2.浏览器方面配置,本文以IE为例:Inernet属性->连接->局域网设置->代理服务器->在地址中填入本地Ip地址:127.0.0.1,端口设置为3128。也就是通过浏览器Url栏输入的http请求通过代理服务器发送到stunnel侦听好的端口(本文为3128)。
      3.最后是服务器,在服务器开启的openssl服务端口是侦听在stunnel的配置文件中的目的端口号。然后通过方向代理明文传到本地局域网的相关web服务器。
      注意:服务器一定要有代理功能,不然在整个会话中的session会保持不住。

文章来自:

http://blog.csdn.net/fatowen/article/details/5269369

感谢原作者!

原创粉丝点击