开源的Stunnel--通用SSL加密程序

原创 2003年01月20日 12:47:00

[开源项目之五]
                          Stunnel--通用SSL加密程序

Stunnel是一个可以用SSL对任意 TCP 连接加密的程序。它可以运行在多种UNIX和Windows操作系统之上。这样说来,它很好的解决了SSL不能对现有的旧的应用程序传输的数据加密的问题,也就是说,在Stunnel出现之前,要实现安全的数据传输,只能依靠在应用程序之中添加SSL代码的方式来提高安全性,但现在,可以不这样做了,Strunnel 为你解决了很多问题。
    Stunnel是基于 OpenSSL的,所以它要求已经安装了 OpenSSL,并进行了正确的配置。它可以向不启用 SSL 的服务器端软件添加 SSL。例如,可以使用 Stunnel 来保护 POP3、SMTP 和 IMAP 服务器。唯一不太尽人意的地方是要使用这些服务器的安全版本,客户机必须是可识别 SSL 的。
   对于Stunnel这个项目而言,它是开源的。当然它的源代码并非是一个完整的产品,因为它是基于OpenSSL的,编译和运行它,你需要有一个SSL库比如 OpenSSL或者SSLeay。这就是说Stunnel能支持所有(也是仅仅)SSL库所支持的,在没有改变Stunnel源代码的情况下。
 Stuunel的源代码在GNU许可下有效。也就说它可以被自由地在商业和非商业应用中使用并修改,只要你提供源代码以及所有修改信息和软件。你要编译Stunnel库是受你选择的许可证限制的,然而OpenSSL和SSLeay都是开源的并且在许可中是同样的慷慨。
不幸的是,Stunnel 有一些局限性。在服务器端,它当前只能够透明地代理 Linux 客户机。在客户机端,不容易执行充分的证书验证。即使如此,Stunnel 仍是实用价值很高的实用程序,应该成为程序员,同样也是系统管理员的安全法宝。如果您正在开发自己的软件,应该能够很容易地将 Stunnel 集成到自己的程序中。
    对网络安全和SSL感兴趣的朋友可以到Stunnel官方网站: http://www.stunnel.org下载最新的Stunnel源代码及帮助文档和示例。
   有了前面的叙述相信你对stunnel已经有一定的了解了,接下来,说明一个用Stunnel加密MySQL的例子(这是Stunnel官方网站提供的,本人只做翻译:))。

 使用Stunnel3.24加密MySQL连接:
  由于我见到许多请求信息是关于对MySQL连接加密的,所有我想我应该公开我这样一个加密解决方案给那些对stunnel感兴趣的人。我成功地在OpenSSL0.9.6的基础上编译了stunnel 3.14并用它为Mysql 3.22.32做加密连接。这里所有操作都是在Red Hat 6.2上进行的。
我的MySQL客户端包括MysQL客户端应用程序和dbish应用程序及Perl DBI模块。为了加密MySQL客户端和服务器端的连接,需要运行两个Stunnel实例,一个在客户机上,另一个在服务器上。下面我将把它们称为CLIENT和 SERVER。客户Stunnel从MySQL客户端应用程序接收MySQL 的查询,加密这些查询,然后将加密的信息发往SERVER的3307端口。另一方面,SERVER上的Stunnel监听3307端口,解密已经加密过的查询请求并返回给3306端口—MySQL标准的默认连接端口(译者注)
    在CLIENT运行Stunnel的命令是:
 ./stunnel -P/tmp/ -c -d 3306 -r SERVER:3307
而在SERVER上运行Stunnel的命令是:
       ./stunnel -P/tmp/ -p stunnel.pem -d 3307 -r localhost:3306
这里我假定两台机器上的Stunnel者是已经编译好的二进制代码并且Stunel的证书文件也都在两台机器的当前目录下。然而,一些需要注意的是你应该保存好stunnel.pem文件。所以最好运行stunnel是做为一个特殊非登陆用户并使得stunnel.pem的所有者UID为0400。
    现在,从CLIENT,你可以访问你的MySQL数据库并享受SSL加密的好处,通过如下命令:
        mysql -h CLIENT -u YOURDBUSER -p
这个命令总是同样地执行你在使用stunnel之前的命令,但是注意你用-h选项指定的是那个运行着stunnel客户后台程序而并非是那台运行MySQL服务器后台程序的机器。
    James Walden                  |  "Fall leaves blanket ground
Sr Internet Software Engineer     |   Redmond dreams darkly, beware
IMS, JFT-104, B-7                 |   Winter brings penguins"
(503) 712-2241                    |     -- Kevin Hackman
 

在Stunnel的老家,有很多的stunnel加密的examples,例如如何通过Stunnel为IMAP服务器提供SSL支持。而Stunnel的地FAQ中也提供了从编译到使用的多方面的帮助。
    可惜的是,当前还没有知名的商业组织支持stunnel。如果你想了解什么,可访问它的网站或者联系:FAQ maintainer。然而,有大量的可用帮助,包括:
       Stunnel-Announce Mailing List stunnel-announce-subscribe@mirt.net
       Stunnel-Users Mailing List stunnel-users-subscribe@mirt.net
你只需要发送空的邮件到上面的邮件列表,就能得到stunnel为你提供的更近一步的服务和指导。
There are no known commercial organizations that support stunnel. If you know any, contact the FAQ maintainer. However there is a great deal of help available from the following two resources

参考:Stunnel官方网站: http://www.stunnel.org

 

加密通讯协议SSL编程

1.    示例包 readme为包内容说明,run_server.sh用来运行服务端,run_client.sh用来运行客户端,mk_server.sh用来编译服务端,mk_client.sh用来...
  • swanabin
  • swanabin
  • 2015年09月18日 18:44
  • 2218

java SSL加密传输

网络传输是存在风险的,因此对服服务端和客户端进行安全校验和传输信息的加密就显得非常的重要。 上面一句有点拗口,简单解释如下文:   当客户使用SSL向站点服务器发送请求时,服务器向客户端发...
  • xo_zhang
  • xo_zhang
  • 2013年06月23日 09:12
  • 5848

SSL协议和几种常见加密算法

SSL协议的工作流程:       服务器认证阶段:       1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;       2)服务器根据客户的信息确定是否...
  • jazywoo123
  • jazywoo123
  • 2014年03月21日 10:36
  • 1557

关于Https协议中的ssl加密解密流程

转载自:http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数...
  • shw372029857
  • shw372029857
  • 2016年09月28日 09:51
  • 9631

Java加密技术(九)——初探SSL

在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密网络的安全通信。现在我们深度了解一下现有的安全网络通信——SSL。      我们需要构建一个由CA机构签发的有效证书,这里我们使用上文...
  • daguairen
  • daguairen
  • 2016年08月31日 10:08
  • 503

通过HTTPS(SSL加密)方式访问webservice

web service在企业应用中常常被用作不同系统之间的接口方式。但是如果没有任何安全机制的话,显然是难以委以重任的。比较直接的web service加密方式就是使用https方式(SSL)方式加密...
  • lamb7758
  • lamb7758
  • 2017年01月03日 09:15
  • 523

PHP下SSL加密解密、验证、签名方法(很简单)

超级简单,依赖于OpenSSL扩展,这里就不多废话了,直接奉上代码 签名: ? 1 2 3 4 5 6 7 8 ...
  • slqgenius
  • slqgenius
  • 2017年04月20日 08:54
  • 645

Linux中关于FTP服务器的加密配置(SSL)

有时我们使用FTP进行连接是,需要对信息进行加密,即使用ssl或者tsl进行连接。这时我们需要用到openssl。安装配置好ssl之后,我们要安装openssl。 wget http://www.o...
  • ps_zhanglei
  • ps_zhanglei
  • 2016年03月21日 15:34
  • 2159

理解SSL(https)中的对称加密与非对称加密

密码学最早可以追溯到古希腊罗马时代,那时的加密方法很简单:替换字母。 早期的密码学: 古希腊人用一种叫 Scytale 的工具加密。更快的工具是 transposition cipher—:只...
  • MOONCOM
  • MOONCOM
  • 2017年03月03日 16:06
  • 2160

Python中使用ssl加密

使用ssl加密传输数据 首先需要使用openssl产生证书 openssl req -new -x509 -days 365 -nodes -out mycertfile.pem -keyout my...
  • robin912
  • robin912
  • 2015年03月20日 21:02
  • 1086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开源的Stunnel--通用SSL加密程序
举报原因:
原因补充:

(最多只允许输入30个字)