[开源项目之五]
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