建立加密隧道

使用 Stunnel 建立加密隧道

附件中的 Server 和 Clinet 都是已经配置好了的,只需修改 Server 的 stunnel.conf 的 connect 为实际的ip和端口即可投入使用,但是建议stunnel由自己重新生成一个以保安全。

假设你已经使用代理软件架设好了代理服务器,端口为 6700 (附带的 Stunnel.conf 设置的就是这个端口,你可以根据自己的需要修改)。
如果要启用客户端密码验证可以在代理软件中设置。

要通过 Stunnel 建立加密隧道则需要做以下的工作

1、创建服务器证书( 原文可见 http://www.stunnel.org/faq/certs.html#ToC5 )

Stunnel 服务方式需要一个证书文件。通过 openssl.exe 来创建服务器证书。

具体命令为

[ 复制 ] [ 运行 ] [ 另存为 ]

openssl req -new -x509 -days 365 -nodes -config openssl.cnf -out stunnel.pem -keyout stunnel.pem

这将会创建一个自己给自己签名的证书。参数的含义:

-days 365
使这个证书的有效期是 365 天,之后它将不能再用。

-new
创建一个新的证书

-x509
创建一个 X509 证书(自己签名的)

-nodes
这个证书没有密码

-config openssl.cnf
OpenSSL 使用的配置文件

-out stunnel.pem
把 SSL 证书写到哪里

[ 复制 ] [ 运行 ] [ 另存为 ]

-keyout stunnel.pem

把 SSL 证书放到这个文件中

这个命令将会问你以下问题(请根据自己的情况回答):

[ 复制 ] [ 运行 ] [ 另存为 ]

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:SiChuan
Locality Name (eg, city) []:Chengdu
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PRCJQ
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:www.example.com
Email Address []:solin.zhan@gmail.com

注意:Common Name (FQDN) 应该是运行 stunnel 机器的主机名。如果你能通过不同的主机名访问这台机器,有些 SSL 客户会警告这个主机的证书有问题,所以最好是使它和用户访问的主机名匹配。

[ 复制 ] [ 运行 ] [ 另存为 ]

openssl gendh 512 >> stunnel.pem

这将生成 Diffie-Hellman 部分, 追加到 pem 文件中。这个只有在你指定 stunnel 使用 DH 才需要。

[ 复制 ] [ 运行 ] [ 另存为 ]

openssl x509 -subject -dates -fingerprint -in stunnel.pem

这个命令是将你的证书信息在屏幕显示出来。

2、配置/运行 Stunnel

Stunnel 默认配置文件是 stunnel.conf
下面是服务方式配置文件内容示范:

[ 复制 ] [ 运行 ] [ 另存为 ]

# 使用服务器模式
client = no

key = stunnel.pem
cert = stunnel.pem

# 隐藏 Stunnel 的托盘图标(值为 no 时隐藏)
taskbar = yes

# 将代理服务器提供的端口加密映射成本机端口
[HTTP2SSL]
# 客户端连接的端口
accept = 8080
# 代理服务所在的IP及提供的端口
connect = 127.0.0.1:6700

含义:使用 stunnel.pem 证书,将 127.0.0.1:6700 的端口加密映射成本机 8080 端口,HTTP2SSL 是标识名,可以改成其他的标识。

直接运行stunnel-4.11.exe,就可以服务器方式启动 Stunnel 了。

3、将Stunnel 安装成 MS NT 服务方式(可选)
在 Stunnel 所有设置完成后,测试完毕后即可将 Stunnel 安装为服务。
运行 stunnel-4.11.exe -install 将会安装成服务。
运行 net start stunnel 启动 stunnel 服务。
运行 net stop stunnel 停止 stunnel 服务。
运行 stunnel-4.11.exe -uninstall 卸载 stunnel 服务。

注意:即使是 MS NT 服务方式启动,当启动 stunnel 4.11 服务的时候,在托盘还是有 Stunnel 的图标。不想托盘有 Stunnel 的图标,可以在 Stunnel.conf 里设置 taskbar = no

4、Stunnel 服务器配置好后即可以使用 Stunnel 客户端连接到 Stunnel 测试了。
Stunnel 服务器和客户端的区别仅在 stunnel.conf 的配置不同而已。
下面是客户方式配置文件内容示范:

# 使用客户模式

[ 复制 ] [ 运行 ] [ 另存为 ]

client = yes
[SSL2HTTP]
accept = 127.0.0.1:8888
connect = 127.0.0.1:8080

含义:使用客户方式方式,将 127.0.0.1:8080 的端口解密映射成本机 8888 端口,SSL2HTTP 是标识名,可以改成其他的标识。

accept设置为127.0.0.1:8888,只允许127.0.0.1--本机使用这个 8888 端口代理,禁止了其他人使用你的机器作代理。

直接运行stunnel-4.11.exe,就可以以客户方式启动 Stunnel 了。

5、设置浏览器的代理地址
浏览器的代理地址设置为 127.0.0.1 端口设置为 accept 中设置的值。即可通过 Stunnel 实现加密代理访问。

Stunnel使用的更多相关文章

  1. 用ccproxy + stunnel做个加密代理

    https://www.stunnel.org/downloads.html ccproxy + stunnel做个加密http代理和socks5代理 目前国内用户无法访问某些国外网站,如http:/ ...

  2. stunnel+CCProxy,搭建加密代理

    总所周知,不可抗拒的特别有用心的原因,我们无法访问youtube,picasa,Twitter……国外优秀网站,很多人采用了代理服务器的方法访问. 如果您有一台放在海外的服务器,这个就好办了.下载一个 ...

  3. Windows系统Stunnel客户端的配置

    Stunnel官方就有Windows版本,到下面的地址下载: https://www.stunnel.org/downloads.html 选择”stunnel-X.XX-installer.exe“ ...

  4. Stunnel服务端

    Stunnel on Debian GNU/Linux 6 (squeeze) 传统的POP3, SMTP, Samba等服务,都是不加密的协议(即在网络上明文传输数据),通过stunnel,可以将访 ...

  5. Stunnel使用2

    1.首先测试一下stunnel.exe,是否能正常运行,正常的话,不会报错,在桌面右下角位置显示. 2.第一步完成后,打开stunnel.conf,对stunnel进行配置,需要修改一下几项:(mys ...

  6. 常用工具之stunnel

    The stunnel program is designed to work as an SSL encryption wrapper between remote client and local ...

  7. squid+stunnel+用户密码认证的三种玩法

    没办法,应用越来越深入,就会越来越多要求. squid+stunnel+用户密码认证的场景至少以下三个,我会遇到. 1,标准玩法 在服务器上建一个SQUID,加密码认证,然后,其它人通过它上网.(不要 ...

  8. (转)用stunnel给普通http通信加密

    转自:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubu ...

  9. 安装Stunnel来实现正向代理邮件

    文:铁乐与猫 2017年8月 一开始我是使用yum install来安装stunnel的 感觉版本低点也无所谓,毕竟只是拿来加密代理一下邮件收发. 可是后来发现之前下载的最新官网版本的tar包里有很多 ...

随机推荐

  1. Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  2. 微信小程序需要https后台的创业机会思考

    最近比较关注微信小程序,而且微信小程序的后台必须强制要求https, https相对http成本要高很多了. 这里我感觉有2个商机 (1)提供https 中转服务器 ,按流量来收费 (2) 微信小程序 ...

  3. SwipeBackActivity 的使用

    1.SwipeBackLayout 项目地址:https://github.com/ikew0ng/SwipeBackLayout 2.用法 android studio  compile 'me.i ...

  4. UISearchController

    搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UIS) 1.在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便 ...

  5. Android 生成xml文件

    生成XML文件备份短信,其格式为: <?xml version="1.0" encoding="UTF-8" standalone="true& ...

  6. iOS中数据传值的几种方式

    值传递:基本数据类型的变量之间的数据传递 //值传递不会改变变量的值 void func(int a) { a = ; } int main(int argc, const char * argv[] ...

  7. Java 线程通信

    线程通信用来保证线程协调运行,一般在做线程同步的时候才需要考虑线程通信的问题. 1.传统的线程通信 通常利用Objeclt类提供的三个方法: wait() 导致当前线程等待,并释放该同步监视器的锁定, ...

  8. 安全攻防之SQL注入(通过sqlmap搞定所有问题)

    第一步: sqlmap基于Python,所以首先下载: http://yunpan.cn/QiCBLZtGGTa7U  访问密码 c26e 第二步: 安装Python,将sqlmap解压到Python ...

  9. HTML5离线存储原理

    找到一篇介绍离线缓存的,感觉比之前看到的解释的更透彻,新的知识点记录如下: 大家都知道Web App是通过浏览器来访问的,所以离线状态下是无法使用app的.其中web app中的一些资源并不经常改变, ...

  10. HttpServletResponse对象 学习

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象即然代表请求和响应,那我们要 ...