Stunnel是一个可以用SSL对任意 TCP 连接加密的程序。它可以运行在多种UNIX和Windows操作系统之上。这样说来,它很好的解决了SSL不能对现有的旧的应用程序传输的数据加密的问题,也就是说,在Stunnel出现之前,要实现安全的数据传输,只能依靠在应用程序之中添加SSL代码的方式来提高安全性,但现在,可以不这样做了,Strunnel 为你解决了很多问题。 #w?www.5y6s.net
Stunnel是基于 OpenSSL的,所以它要求已经安装了 OpenSSL,并进行了正确的配置。它可以向不启用 SSL 的服务器端软件添加 SSL。例如,可以使用 Stunnel 来保护 POP3、SMTP 和 IMAP 服务器。唯一不太尽人意的地方是要使用这些服务器的安全版本,客户机必须是可识别 SSL 的。 www.5y6s.net
对于Stunnel这个项目而言,它是开源的。当然它的源代码并非是一个完整的产品,因为它是基于OpenSSL的,编译和运行它,你需要有一个SSL库比如 OpenSSL或者SSLeay。这就是说Stunnel能支持所有(也是仅仅)SSL库所支持的,在没有改变Stunnel源代码的情况下。 ? www.5y6s.net
Stuunel的源代码在GNU许可下有效。也就说它可以被自由地在商业和非商业应用中使用并修改,只要你提供源代码以及所有修改信息和软件。你要编译Stunnel库是受你选择的许可证限制的,然而OpenSSL和SSLeay都是开源的并且在许可中是同样的慷慨。 ?€ www.5y6s.net
不幸的是,Stunnel 有一些局限性。在服务器端,它当前只能够透明地代理 Linux 客户机。在客户机端,不容易执行充分的证书验证。即使如此,Stunnel 仍是实用价值很高的实用程序,应该成为程序员,同样也是系统管理员的安全法宝。如果您正在开发自己的软件,应该能够很容易地将 Stunnel 集成到自己的程序中。 銹?www.5y6s.net
对网络安全和SSL感兴趣的朋友可以到Stunnel官方网站: http://www.stunnel.org下载最新的Stunnel源代码及帮助文档和示例。 J枏 www.5y6s.net
有了前面的叙述相信你对stunnel已经有一定的了解了,接下来,说明一个用Stunnel加密MySQL的例子(这是Stunnel官方网站提供的,本人只做翻译:)。 }電 www.5y6s.net
??www.5y6s.net
使用Stunnel3.24加密MySQL连接: P www.5y6s.net
由于我见到许多请求信息是关于对MySQL连接加密的,所有我想我应该公开我这样一个加密解决方案给那些对stunnel感兴趣的人。我成功地在OpenSSL0.9.6的基础上编译了stunnel 3.14并用它为Mysql 3.22.32做加密连接。这里所有操作都是在Red Hat 6.2上进行的。 ▍?www.5y6s.net
我的MySQL客户端包括MysQL客户端应用程序和dbish应用程序及Perl DBI模块。为了加密MySQL客户端和服务器端的连接,需要运行两个Stunnel实例,一个在客户机上,另一个在服务器上。下面我将把它们称为CLIENT和 SERVER。客户Stunnel从MySQL客户端应用程序接收MySQL 的查询,加密这些查询,然后将加密的信息发往SERVER的3307端口。另一方面,SERVER上的Stunnel监听3307端口,解密已经加密过的查询请求并返回给3306端口—MySQL标准的默认连接端口(译者注) g?www.5y6s.net
在CLIENT运行Stunnel的命令是: ?\ www.5y6s.net
./stunnel -P/tmp/ -c -d 3306 -r SERVER:3307 4P?www.5y6s.net
而在SERVER上运行Stunnel的命令是: www.5y6s.net
./stunnel -P/tmp/ -p stunnel.pem -d 3307 -r localhost:3306 眖?www.5y6s.net
这里我假定两台机器上的Stunnel者是已经编译好的二进制代码并且Stunel的证书文件也都在两台机器的当前目录下。然而,一些需要注意的是你应该保存好stunnel.pem文件。所以最好运行stunnel是做为一个特殊非登陆用户并使得stunnel.pem的所有者UID为0400。 輕 www.5y6s.net
现在,从CLIENT,你可以访问你的MySQL数据库并享受SSL加密的好处,通过如下命令: + www.5y6s.net
mysql -h CLIENT -u YOURDBUSER -p |I www.5y6s.net
这个命令总是同样地执行你在使用stunnel之前的命令,但是注意你用-h选项指定的是那个运行着stunnel客户后台程序而并非是那台运行MySQL服务器后台程序的机器。 oj www.5y6s.net
James Walden | "Fall leaves blanket ground ? www.5y6s.net
Sr Internet Software Engineer | Redmond dreams darkly, beware ?e www.5y6s.net
IMS, JFT-104, B-7 | Winter brings penguins" :縁 www.5y6s.net
(503) 712-2241 | -- Kevin Hackman 硠?www.5y6s.net
j癠 www.5y6s.net
!唽 www.5y6s.net
在Stunnel的老家,有很多的stunnel加密的examples,例如如何通过Stunnel为IMAP服务器提供SSL支持。而Stunnel的地FAQ中也提供了从编译到使用的多方面的帮助。 ??www.5y6s.net
可惜的是,当前还没有知名的商业组织支持stunnel。如果你想了解什么,可访问它的网站或者联系:FAQ maintainer。然而,有大量的可用帮助,包括: {睾 www.5y6s.net
Stunnel-Announce Mailing List stunnel-announce-subscribe@mirt.net ??www.5y6s.net
Stunnel-Users Mailing List stunnel-users-subscribe@mirt.net T烉 www.5y6s.net
你只需要发送空的邮件到上面的邮件列表,就能得到stunnel为你提供的更近一步的服务和指导。 f? www.5y6s.net
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 獑y www.5y6s.net
J閿 www.5y6s.net
参考:Stunnel官方网站: http://www.stunnel.org
现今SSL安全协议广泛地用在Internet和Intranet的服务器产品和客户端产品中,用于安全地传送数据,集中到每个WEB服务器和浏览器中,从而来保证来用户都可以与Web站点安全交流 。本文将详细介绍SSL安全协议及在WEB服务器安全的应用。 賡?www.5y6s.net
一、SSL安全协议在WEB服务器中的应用 ? www.5y6s.net
d?www.5y6s.net
1、我们为提供具有真正安全连接的高速安全套接层SSL)交易,可以将PCI卡形式的SSL卸载(offloading)设备直接安装到Web服务器上,这种做法的好处是: m" www.5y6s.net
錧 www.5y6s.net
(1)从客户机到安全Web服务器的数据安全性; '? www.5y6s.net
x? www.5y6s.net
(2)由于卸载工具执行所有SSL处理过程并完成TCP/IP协商,因此大大提高了吞吐量; L房 www.5y6s.net
狕B www.5y6s.net
(3)简化了密钥的管理和维护。 k綀 www.5y6s.net
.?www.5y6s.net
安全性加大在实现向电子商务和其它安全Web站点的服务器增加SSL加速和卸载设备的结果是提高了交易处理速度。但是由于设备是作为应用被安装在网络上的,因此设备与安全服务器之间的数据是未加密的。将SSL卸载设备作为PCI扩展卡直接安装在安全服务器上,保证了从浏览器到服务器的连接安全性。 鲍F www.5y6s.net
袰?www.5y6s.net
SSL可以用于在线交易时保护象信用卡号以及股票交易明细这类敏感信息。受SSL保护的网页具有"https"前缀,而非标准的"http"前缀 ㄏ?www.5y6s.net
詔s www.5y6s.net
2、新型专用网络设备SSL加速器可以使Web站点通过在优化的硬件和软件中进行所有的SSL处理来满足性能和安全性的需要。 ??www.5y6s.net
JG?www.5y6s.net
当具有SSL功能的浏览器(Navigator、IE)与Web服务器(Apache、IIS)通信时,它们利用数字证书确认对方的身份。数字证书是由可信赖的第三方发放的,并被用于生成公共密钥。 + www.5y6s.net
袅?www.5y6s.net
当最初的认证完成后,浏览器向服务器发送48字节利用服务器公共密钥加密的主密钥,然后Web服务器利用自己的私有密钥解密这个主密钥。最后,浏览器和服务器在会话过程中用来加解密的对称密钥集合就生成了。加密算法可以为每次会话显式地配置或协商,最广泛使用的加密标准为"数据加密标准"(DES)和RC4。 蚢 www.5y6s.net
茚 www.5y6s.net
一旦完成上述启动过程,安全通道就建立了,保密的数据传输就可以开始了。尽管初始认证和密钥生成对于用户是透明的,但对于Web服务器来说,它们远非透明。由于必须为每次用户会话执行启动过程,因而给服务器CPU造成了沉重负担并产生了严重的性能瓶颈。据测试,当处理安全的SSL会话时,标准的Web服务器只能处理1%到10%的正常负载。 H?www.5y6s.net
髊?www.5y6s.net
二、应做的处理 ` www.5y6s.net
?A www.5y6s.net
密码在加解密数据时,使用两种类型的密钥。私有密钥被发给各实体并且永远不向外透露,公共密钥可以任意分发。这两种密钥对于认证过程是必不可少的。使用公钥加密的数据不能使用同一个密钥进行解密,必须使用私有密钥进行解密。 蚛b www.5y6s.net
??www.5y6s.net
SSL使用复杂的数学公式进行数据加密和解密,这些公式的复杂性根据密码的强度不同而不同。高强度的计算会使多数服务器停顿,导致性能下降。多数Web服务器在执行SSL相关任务时,吞吐量会显著下降,性能比在只执行HTTP 1.0连接时的速度慢50多倍。而且由于SSL复杂的认证方案和加/解密算法,SSL需要大量地消耗CPU资源,从而造成Web服务器性能很大的下降。它所造成的服务器瓶颈使Web站点的速度慢如蜗牛爬行,这无疑会失去在线客户。 鉀?www.5y6s.net
a~?www.5y6s.net
为解决这种性能上的损失,我们可以通过安装SSL加速器和卸载器来减少SSL交易中的时延。加速器通过执行一部分SSL处理任务来提高交易速度,同时依靠安全Web服务器软件完成其余的任务。卸载器承担所有SSL处理任务并且不需要安全Web服务器软件,从而使Web服务器可以以同样的高速度提供安全和非安全的服务。由于密钥管理和维护过程不依靠对应用软件的手工配置,因此使用卸载器效率会更高一些。 炵?www.5y6s.net
ū?www.5y6s.net
多数这类设备作为网络应用被安装在机架式或小底座网络设备上,由于它们为整个网络提供加解密服务,因此设备与Web服务器之间的数据是未加密的。 灾K www.5y6s.net
/ www.5y6s.net
通过直接在服务器上安装SSL卸载器,可以解决速度和安全性问题。加密的数据由客户机经过Internet和网络直接传送到一台服务器上。安装在这台服务器上的卸载器对数据进行解密并将其沿PCI总线直接传送到处理器。这样做的结果是宿主服务器在保证客户机与服务器之间传输时数据安全性的同时,以非安全交易服务同样的速度提供了安全交易服务。 歒?www.5y6s.net
凶?www.5y6s.net
SSL加速设备的出现就是为了解决对CPU资源过量需求的SSL协议所造成的性能问题,这类设备是一些用以在不增加Web服务器负担的条件下处理SSL任务的特殊的网络部件。通过优化硬件和软件,专用SSL加速器处理SSL会话的速度为标准Web服务器的10到40倍。此外,SSL加速器解放了服务器资源,使这些资源可以真正用于处理应用逻辑和数据库查询,从而加快了整个站点的速度。 ? www.5y6s.net
暤 www.5y6s.net
将SSL设备集成到网络中很简单,第4层到第7层交换机或负载均衡设备被配置为将所有的443端口(Https)请求改向传送到SSL设备。这时,这台设备承担所有的SSL处理任务,因而立即解脱了Web服务器的负载。随着安全传输流容量的增加,在不增加不必要的管理负担的条件下,可以再部署其他SSL设备。 ?h www.5y6s.net
]蓏 www.5y6s.net
最近,SSL加速器功能已经被集成到象服务器端缓存(即所谓的"服务器加速器")这类Web内容提交产品中了。这种作法的主要好处是,服务器加速器进行SSL处理和对象提交。 亸?www.5y6s.net
尧p www.5y6s.net
配置SSL功能的服务器加速器使广泛地将SSL用于Web基础设施上的安全内容交换成为可能,安全网页将快速地得到提交,安全交易也将迅速地完成。 ?_ www.5y6s.net
??www.5y6s.net
三、如何实现WEB和Internet安全 ? www.5y6s.net
柿?www.5y6s.net
我们在安装好Certificate Server后,给自己的Web Server发一张证书,安全站点已经建立起来了,在IIS管理器中打开安全通道(先不要接受客户证书验证,如果没有浏览器证书的话),把http改为https后访问的站点,怎么系统提示服务器证书有问题?记得在浏览器中安装的根证书了?要不就是服务器证书过期了,如果没有在浏览器中安装根证书,就要安装它,同时其他人通过Internet访问站点如果没有安装根证书,需要将根证书放在网上让别人下载。用IE安装根证书很简单,浏览器提示用户打开或保存时选择打开,会看到根证书信息然后按安装证书就可以了。但可能会发现Netscap无法安装根证书,SSL协议是由Netscape首先提出并实现的,Netscape使用MIME类型application/x-x509-ca-cert来表示CA证书,IE3.1以后开始支持SSL,起初Windows系统的数字证书文件(.crt和.cer)也采用相同的MIME类型,IE5.0以后MIME类型被改为application/pkix-cert这就造成Netscape安装根证书困难。不过这个问题好解决,只要在IIS里新注册application/x-x509-ca-cert的MIME类型就可以了。刚发的证书浏览器有时也会显示证书过期,这是因为浏览器判断证书有效是从证书有效起始时间的后一天开始,此外数字证书中的日期大都是GMT时间而不是本地时间,所以通常将本机时间向后调整一天这个问题就能解决,所以证书过期不仅仅可能表示太晚也可能表示太早。 覗d www.5y6s.net
摞O www.5y6s.net
一切都已经就绪,进入安全网页了,在IE的状态栏里应该有一个小锁,双击这个小锁能看到站点证书信息,同时也能看到整个证书链。现在也许会问"那么现在我怎么用SSL加密我的数据呢?",实际上现在浏览器和Web服务器之间交换的所有信息都已经被加密,SSL是工作在网络层与会话层之间的协议,它在TCP/IP和HTTP之间增加了一个加密层,所以对于工作在HTTP协议以上的用户而言,加密是完全透明的,所以请忘记"用SSL加密"这句话,除非直接在Socket上开发,比如写个网络蚂蚁之类的。 娆 www.5y6s.net
€:?www.5y6s.net
现在想用SSL实现更多的东西,不仅仅是加密。是申请浏览器(客户)证书的时候了,申请客户证书过程也不复杂,除了相同的名称,国家之类的还多一个EMail地址,如果用IE申请证书可能会有许多选项,其中有两个比较有意义,"允许私钥被导出"对与不在固定机器上上网的人比较有用,如果在一台机器上申请了证书,导出证书和私钥并安装到其他机器上就可以在其他机器上使用了。"用户保护"会让浏览器在使用的私钥时提示,这通常发生在加密和签名过程之前。证书安装过程通常都是自动的,安装完成后可以欣赏一下,在IE中打开Internet选项,选择内容一栏,按"证书"按钮",在个人一栏内应该有客户证书。 ??www.5y6s.net
+髊 www.5y6s.net
现在在IIS管理器中设置站点要求客户证书,然后访问站点,浏览器会弹出一个对话框,让选择要使用的客户证书,然后就进去了,也没什么不同。那么怎么样利用SSL实现身份认证呢?首先可以在IIS管理器中启用客户证书映射,将客户证书影射到NT帐号,可以映射某张证书,也可以映射所有根证书所签发的客户证书,如果在签发者列表中找不到根证书,需要运行SSLCA.exe(IIS4.0以上),以后的事就属于NT管理员的范畴了。如果不想用NT的安全机制,就需要获取对方客户证书的信息,然后进行判断。通常客户证书的信息由HTTPS_开头的服务器变量提供,如Apache Server,Domino等,可以查看文档或者写一个小的CGI程序列出所有的服务器变量。如果是IIS就更简单了: Et?www.5y6s.net
ㄗ www.5y6s.net
用 Request.ClientCertificate( Key[SubField] )可以访问想要的内容: 牡?www.5y6s.net
?www.5y6s.net
如可显示客户证书的国家代码。具体参数请在MSDN搜索ClientCertificate。
不需要写代码 m澱 www.5y6s.net
一,服务器上装有CA(Certificate Server) ^{7 www.5y6s.net
1,服务器上安装CA =M?www.5y6s.net
Win2000中带有CA的安装程序。单击Start,Control Pannel Add/Remove Programs兵单击Add/Remove Windows Compenents。当Windows Component Wizard出现时,选择证书服务(Certificate Services)。下一步中,安装需要指出服务器授权的类型,一般作为一个独立的Web服务器,选择Stand-alone root CA。然后,需要指定共享文件夹,这作为证书服务的配置数据存储位置,单击Next,安装完毕。 飣 www.5y6s.net
注意:自己建立CA 机构时,所给CA机构起的名是自己定义的,在客户端的IE中,在一开始并不属于客户端信任的根证书颁发机构,如果,客户端没有把该CA机构加为自己所信任的根证书颁发机构,那么在客户端访问该服务器上的网站时,会出现安全警告信息。 _}7 www.5y6s.net
2,建立并安装一个站点证书 個?www.5y6s.net
步骤如下: 荴?www.5y6s.net
A, 打开IIS,选定要安装证书的站点,单击右键,选择弹出菜单中的properties,在弹出的对话框中,单击directory security属性页,单击Server Certificate按钮,出现IIS Certificate Wizard对话框,这一步的操作,所完成的功能是生成一个向CA申请数字证书的密钥文件,文件以.txt的格式存于本机目录下。 眛?www.5y6s.net
B, 通过Certificate Server Enrollment的页面访问注册控件和它的表格: //?www.5y6s.net
在安装了Certificate Service的机器上可以从位于http://localhost/certsrv 的Certificate Server Administration Tools Web页面可以访问该注册控件。选择request a certificate 选项,在下一页面中选择advance request,这里需要注意的是,如果是给网站申请数字证书时必须选择该项,因为赋予网站的数字证书需要使用a步骤中所产生的特定的密钥文件,这样才能生成属于该网站的唯一的数字证书。而一般User certificate request 是针对需要访问该网站的客户设计的,分别有web browser certificate 和E-Mail Protection certificate 两种方式。客户采用web browser certificate方式申请对有SSL保护的网站的访问,而E-Mail Protection certificate是保护客户收发email时的信息传送。接下去页面的Advanced Certificate Requests 中我们选择Submit a certificate request using a base64 encoded PKCS #10 file or a renewal request using a base64 encoded PKCS #7 file。因为这种格式和在a步骤中所产生的密钥文件的加密格式一致。然后,可以通过browse把存在本机上的.txt密钥文件上载至网页上,递出申请。在最后的界面中,会被告知请求已经被接到并正在等待证书授权机构的批准。 w揽 www.5y6s.net
C, 微软的Certificate Service可以使用MMC来管理: ?s?www.5y6s.net
服务器提出的要求数字验证的请求传递到CA机构中,打开Start/Program/Administrative tools/Certification Authority后,可以看到pending request文件夹,这个文件夹包含了所有等待root授权机构批准的证书请求。如果CA认证机构觉得该网站的申请可行,则单击右键选择issue,这样,该文件就被移到了issued Certificates,表示申请成功,这个节点包含了所有被证书服务的管理员批准并被发布的证书。反之如果CA机构觉得该申请不可行,则选择Deny,该文件被转移到Failed request,表示申请失败,这个节点包含了所有被拒绝的证书请求。对申请成功并发布的数字证书而言,如果CA机构想取消该证书,可以单击右键选择revoke,则已申请成功的数字证书被移到revoke certificates文件夹内,这个节点包含了所有被发布但是又被撤销的证书。 /?www.5y6s.net
D, 提交数字验证的网站在等待一定时间后,依然可以通过http://localhost/certsrv来查看自己所申请的数字验证的进行情况。选择Check On A Pending Certificate选项并单击Next 按钮继续。从选项框中选择候选的请求,单击Next按钮继续。为下载该文件选择Base64 encoding并单击Download CA Certificate链接以开始下载过程。这样就从证书授权机构接到了服务器证书文件。打开IIS,选定已经得到数字验证的网站,单击右键后选择properties,在属性页directory security中,单击Server Certificate 按钮以启动Web服务证书向导,选择Process A Pending Request and Install Certificate选项。选择上一步骤中download下来的数字证书(即.cer文件)的存放路径,开始安装。安装成功后,directory security属性页中的view certificate和edit按钮由disable变为enable。整个网站的数字验证过程完毕。 覄?www.5y6s.net
3,关于certificate的属性设置 瀽u www.5y6s.net
点击directory security属性页的edit按钮,可以进行网站数字验证属性的设置。首先,如果选择了require secure channel(SSL)复选框,则http的形式将无法访问该站点,只有采用https的方式进行访问。如果不选择该项的话,则http和https两种方式并存,都可以进行对此网站的访问。如果选择了该项,则又有三种方式可供选择,分别是ignore client certificate,accept client certificate 以及require client certificate。Ignore client certificate表示不接受客户证书(默认):如果客户浏览器安装了客户证书,会返回一个Access Denied消息。Accept client certificate表示接受证书:不管客户是否安装了客户证书对服务器没有区别,访问在两种情况下都是允许的。Ignore client certificate表示需要客户证书:除非客户有一个被root CA(这里是证书服务器)授予的合法证书,否则访问被拒绝。客户要访问网站,必须得先从服务器得到数字验证,也即,客户端必须首先向要访问的网站提出要求数字验证的申请,在得到服务器端发回的用于两者间信息交互的数字证书后,才可以对该网站进行访问,否则,网站将拒绝该客户的访问。 鐪?www.5y6s.net
不同的网站可以针对这三个属性进行不同的设置。 泒?www.5y6s.net
4,客户端SSL的配置 憔?www.5y6s.net
在浏览器和Web站点之间开始SSL通信之前,客户端必须能够认出服务器的证书是合法的。要做到这一点,客户端必须和服务器的证书授权机构取得联系,在这种情况下是本地的证书服务器。如果没能实现前面的步骤,直接连到SSL站点,会首先接到安全警告信息。客户浏览器需要在浏览器的Trusted Root Store中安装证书。要安装证书,在安全警告对话框出现时,单击View Certificate按钮,就会出现一个对话框,该对话框中包含了证书的信息。单击Install Certificate 按钮以启动证书导入向导。 3 www.5y6s.net
对客户而言,SSL的配置就相对比较简单,客户可以选择申请数字证书,也可以不用,只是,如果客户所访问的某个网站设定了require client certificate属性,则客户必须在得到了该网站的数字验证后,才能对此进行访问,换言之,客户想得到访问权,就必须先向网站提出申请。 欠 www.5y6s.net
客户通过访问http://servername/certsrv来申请数字验证,它的操作过程和网站申请数字验证基本雷同,只是它不是选择Advance request这一项,而是使用User certificate request 下的web browser certificate选项,只要填写客户的一些相应信息后,就能递出申请,而当CA机构认证后,也是从网上直接下载相对应的数字证书至本机。这样,每当访问该网站,当弹出要求客户端数字验证的消息框后,客户选择已经下载过的数字证书,就可以进行对网站的访问了。 W惉 www.5y6s.net
q? www.5y6s.net
注意事项:如果网站的端口号不是默认的80,而是自己定义的话,则相应的也要给SSL Port 设定一个端口号,以示区别,而访问http和https时,所输入的端口号是不一致的。如果网站使用默认的80端口,则SSL也不需要配置特定的端口号,它的默认端口号为443。 苻?www.5y6s.net
??www.5y6s.net
二,服务器和装有CA(Certificate Server)的计算机独立 服 www.5y6s.net
网站申请数字证书的过程和前面部分一样。只是,上一部分的操作因为CA和服务器设在同一台机器上,所以,访问本机的http://localhost/certsrv就可以了,而这一部分,因为CA和服务器的计算机独立,所以,申请的时候也和客户端一样,远程访问http://CAname/certsrv ,其中的具体操作和上一部分一样。只是,在这种情况下,该网站如果设置了require client certificate,则客户就很难访问该网站了,因为客户端无法向该网站发出要求数字验证的申请。一般而言,最好采用accept client certificate。
Stunnel是基于 OpenSSL的,所以它要求已经安装了 OpenSSL,并进行了正确的配置。它可以向不启用 SSL 的服务器端软件添加 SSL。例如,可以使用 Stunnel 来保护 POP3、SMTP 和 IMAP 服务器。唯一不太尽人意的地方是要使用这些服务器的安全版本,客户机必须是可识别 SSL 的。 www.5y6s.net
对于Stunnel这个项目而言,它是开源的。当然它的源代码并非是一个完整的产品,因为它是基于OpenSSL的,编译和运行它,你需要有一个SSL库比如 OpenSSL或者SSLeay。这就是说Stunnel能支持所有(也是仅仅)SSL库所支持的,在没有改变Stunnel源代码的情况下。 ? www.5y6s.net
Stuunel的源代码在GNU许可下有效。也就说它可以被自由地在商业和非商业应用中使用并修改,只要你提供源代码以及所有修改信息和软件。你要编译Stunnel库是受你选择的许可证限制的,然而OpenSSL和SSLeay都是开源的并且在许可中是同样的慷慨。 ?€ www.5y6s.net
不幸的是,Stunnel 有一些局限性。在服务器端,它当前只能够透明地代理 Linux 客户机。在客户机端,不容易执行充分的证书验证。即使如此,Stunnel 仍是实用价值很高的实用程序,应该成为程序员,同样也是系统管理员的安全法宝。如果您正在开发自己的软件,应该能够很容易地将 Stunnel 集成到自己的程序中。 銹?www.5y6s.net
对网络安全和SSL感兴趣的朋友可以到Stunnel官方网站: http://www.stunnel.org下载最新的Stunnel源代码及帮助文档和示例。 J枏 www.5y6s.net
有了前面的叙述相信你对stunnel已经有一定的了解了,接下来,说明一个用Stunnel加密MySQL的例子(这是Stunnel官方网站提供的,本人只做翻译:)。 }電 www.5y6s.net
??www.5y6s.net
使用Stunnel3.24加密MySQL连接: P www.5y6s.net
由于我见到许多请求信息是关于对MySQL连接加密的,所有我想我应该公开我这样一个加密解决方案给那些对stunnel感兴趣的人。我成功地在OpenSSL0.9.6的基础上编译了stunnel 3.14并用它为Mysql 3.22.32做加密连接。这里所有操作都是在Red Hat 6.2上进行的。 ▍?www.5y6s.net
我的MySQL客户端包括MysQL客户端应用程序和dbish应用程序及Perl DBI模块。为了加密MySQL客户端和服务器端的连接,需要运行两个Stunnel实例,一个在客户机上,另一个在服务器上。下面我将把它们称为CLIENT和 SERVER。客户Stunnel从MySQL客户端应用程序接收MySQL 的查询,加密这些查询,然后将加密的信息发往SERVER的3307端口。另一方面,SERVER上的Stunnel监听3307端口,解密已经加密过的查询请求并返回给3306端口—MySQL标准的默认连接端口(译者注) g?www.5y6s.net
在CLIENT运行Stunnel的命令是: ?\ www.5y6s.net
./stunnel -P/tmp/ -c -d 3306 -r SERVER:3307 4P?www.5y6s.net
而在SERVER上运行Stunnel的命令是: www.5y6s.net
./stunnel -P/tmp/ -p stunnel.pem -d 3307 -r localhost:3306 眖?www.5y6s.net
这里我假定两台机器上的Stunnel者是已经编译好的二进制代码并且Stunel的证书文件也都在两台机器的当前目录下。然而,一些需要注意的是你应该保存好stunnel.pem文件。所以最好运行stunnel是做为一个特殊非登陆用户并使得stunnel.pem的所有者UID为0400。 輕 www.5y6s.net
现在,从CLIENT,你可以访问你的MySQL数据库并享受SSL加密的好处,通过如下命令: + www.5y6s.net
mysql -h CLIENT -u YOURDBUSER -p |I www.5y6s.net
这个命令总是同样地执行你在使用stunnel之前的命令,但是注意你用-h选项指定的是那个运行着stunnel客户后台程序而并非是那台运行MySQL服务器后台程序的机器。 oj www.5y6s.net
James Walden | "Fall leaves blanket ground ? www.5y6s.net
Sr Internet Software Engineer | Redmond dreams darkly, beware ?e www.5y6s.net
IMS, JFT-104, B-7 | Winter brings penguins" :縁 www.5y6s.net
(503) 712-2241 | -- Kevin Hackman 硠?www.5y6s.net
j癠 www.5y6s.net
!唽 www.5y6s.net
在Stunnel的老家,有很多的stunnel加密的examples,例如如何通过Stunnel为IMAP服务器提供SSL支持。而Stunnel的地FAQ中也提供了从编译到使用的多方面的帮助。 ??www.5y6s.net
可惜的是,当前还没有知名的商业组织支持stunnel。如果你想了解什么,可访问它的网站或者联系:FAQ maintainer。然而,有大量的可用帮助,包括: {睾 www.5y6s.net
Stunnel-Announce Mailing List stunnel-announce-subscribe@mirt.net ??www.5y6s.net
Stunnel-Users Mailing List stunnel-users-subscribe@mirt.net T烉 www.5y6s.net
你只需要发送空的邮件到上面的邮件列表,就能得到stunnel为你提供的更近一步的服务和指导。 f? www.5y6s.net
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 獑y www.5y6s.net
J閿 www.5y6s.net
参考:Stunnel官方网站: http://www.stunnel.org
现今SSL安全协议广泛地用在Internet和Intranet的服务器产品和客户端产品中,用于安全地传送数据,集中到每个WEB服务器和浏览器中,从而来保证来用户都可以与Web站点安全交流 。本文将详细介绍SSL安全协议及在WEB服务器安全的应用。 賡?www.5y6s.net
一、SSL安全协议在WEB服务器中的应用 ? www.5y6s.net
d?www.5y6s.net
1、我们为提供具有真正安全连接的高速安全套接层SSL)交易,可以将PCI卡形式的SSL卸载(offloading)设备直接安装到Web服务器上,这种做法的好处是: m" www.5y6s.net
錧 www.5y6s.net
(1)从客户机到安全Web服务器的数据安全性; '? www.5y6s.net
x? www.5y6s.net
(2)由于卸载工具执行所有SSL处理过程并完成TCP/IP协商,因此大大提高了吞吐量; L房 www.5y6s.net
狕B www.5y6s.net
(3)简化了密钥的管理和维护。 k綀 www.5y6s.net
.?www.5y6s.net
安全性加大在实现向电子商务和其它安全Web站点的服务器增加SSL加速和卸载设备的结果是提高了交易处理速度。但是由于设备是作为应用被安装在网络上的,因此设备与安全服务器之间的数据是未加密的。将SSL卸载设备作为PCI扩展卡直接安装在安全服务器上,保证了从浏览器到服务器的连接安全性。 鲍F www.5y6s.net
袰?www.5y6s.net
SSL可以用于在线交易时保护象信用卡号以及股票交易明细这类敏感信息。受SSL保护的网页具有"https"前缀,而非标准的"http"前缀 ㄏ?www.5y6s.net
詔s www.5y6s.net
2、新型专用网络设备SSL加速器可以使Web站点通过在优化的硬件和软件中进行所有的SSL处理来满足性能和安全性的需要。 ??www.5y6s.net
JG?www.5y6s.net
当具有SSL功能的浏览器(Navigator、IE)与Web服务器(Apache、IIS)通信时,它们利用数字证书确认对方的身份。数字证书是由可信赖的第三方发放的,并被用于生成公共密钥。 + www.5y6s.net
袅?www.5y6s.net
当最初的认证完成后,浏览器向服务器发送48字节利用服务器公共密钥加密的主密钥,然后Web服务器利用自己的私有密钥解密这个主密钥。最后,浏览器和服务器在会话过程中用来加解密的对称密钥集合就生成了。加密算法可以为每次会话显式地配置或协商,最广泛使用的加密标准为"数据加密标准"(DES)和RC4。 蚢 www.5y6s.net
茚 www.5y6s.net
一旦完成上述启动过程,安全通道就建立了,保密的数据传输就可以开始了。尽管初始认证和密钥生成对于用户是透明的,但对于Web服务器来说,它们远非透明。由于必须为每次用户会话执行启动过程,因而给服务器CPU造成了沉重负担并产生了严重的性能瓶颈。据测试,当处理安全的SSL会话时,标准的Web服务器只能处理1%到10%的正常负载。 H?www.5y6s.net
髊?www.5y6s.net
二、应做的处理 ` www.5y6s.net
?A www.5y6s.net
密码在加解密数据时,使用两种类型的密钥。私有密钥被发给各实体并且永远不向外透露,公共密钥可以任意分发。这两种密钥对于认证过程是必不可少的。使用公钥加密的数据不能使用同一个密钥进行解密,必须使用私有密钥进行解密。 蚛b www.5y6s.net
??www.5y6s.net
SSL使用复杂的数学公式进行数据加密和解密,这些公式的复杂性根据密码的强度不同而不同。高强度的计算会使多数服务器停顿,导致性能下降。多数Web服务器在执行SSL相关任务时,吞吐量会显著下降,性能比在只执行HTTP 1.0连接时的速度慢50多倍。而且由于SSL复杂的认证方案和加/解密算法,SSL需要大量地消耗CPU资源,从而造成Web服务器性能很大的下降。它所造成的服务器瓶颈使Web站点的速度慢如蜗牛爬行,这无疑会失去在线客户。 鉀?www.5y6s.net
a~?www.5y6s.net
为解决这种性能上的损失,我们可以通过安装SSL加速器和卸载器来减少SSL交易中的时延。加速器通过执行一部分SSL处理任务来提高交易速度,同时依靠安全Web服务器软件完成其余的任务。卸载器承担所有SSL处理任务并且不需要安全Web服务器软件,从而使Web服务器可以以同样的高速度提供安全和非安全的服务。由于密钥管理和维护过程不依靠对应用软件的手工配置,因此使用卸载器效率会更高一些。 炵?www.5y6s.net
ū?www.5y6s.net
多数这类设备作为网络应用被安装在机架式或小底座网络设备上,由于它们为整个网络提供加解密服务,因此设备与Web服务器之间的数据是未加密的。 灾K www.5y6s.net
/ www.5y6s.net
通过直接在服务器上安装SSL卸载器,可以解决速度和安全性问题。加密的数据由客户机经过Internet和网络直接传送到一台服务器上。安装在这台服务器上的卸载器对数据进行解密并将其沿PCI总线直接传送到处理器。这样做的结果是宿主服务器在保证客户机与服务器之间传输时数据安全性的同时,以非安全交易服务同样的速度提供了安全交易服务。 歒?www.5y6s.net
凶?www.5y6s.net
SSL加速设备的出现就是为了解决对CPU资源过量需求的SSL协议所造成的性能问题,这类设备是一些用以在不增加Web服务器负担的条件下处理SSL任务的特殊的网络部件。通过优化硬件和软件,专用SSL加速器处理SSL会话的速度为标准Web服务器的10到40倍。此外,SSL加速器解放了服务器资源,使这些资源可以真正用于处理应用逻辑和数据库查询,从而加快了整个站点的速度。 ? www.5y6s.net
暤 www.5y6s.net
将SSL设备集成到网络中很简单,第4层到第7层交换机或负载均衡设备被配置为将所有的443端口(Https)请求改向传送到SSL设备。这时,这台设备承担所有的SSL处理任务,因而立即解脱了Web服务器的负载。随着安全传输流容量的增加,在不增加不必要的管理负担的条件下,可以再部署其他SSL设备。 ?h www.5y6s.net
]蓏 www.5y6s.net
最近,SSL加速器功能已经被集成到象服务器端缓存(即所谓的"服务器加速器")这类Web内容提交产品中了。这种作法的主要好处是,服务器加速器进行SSL处理和对象提交。 亸?www.5y6s.net
尧p www.5y6s.net
配置SSL功能的服务器加速器使广泛地将SSL用于Web基础设施上的安全内容交换成为可能,安全网页将快速地得到提交,安全交易也将迅速地完成。 ?_ www.5y6s.net
??www.5y6s.net
三、如何实现WEB和Internet安全 ? www.5y6s.net
柿?www.5y6s.net
我们在安装好Certificate Server后,给自己的Web Server发一张证书,安全站点已经建立起来了,在IIS管理器中打开安全通道(先不要接受客户证书验证,如果没有浏览器证书的话),把http改为https后访问的站点,怎么系统提示服务器证书有问题?记得在浏览器中安装的根证书了?要不就是服务器证书过期了,如果没有在浏览器中安装根证书,就要安装它,同时其他人通过Internet访问站点如果没有安装根证书,需要将根证书放在网上让别人下载。用IE安装根证书很简单,浏览器提示用户打开或保存时选择打开,会看到根证书信息然后按安装证书就可以了。但可能会发现Netscap无法安装根证书,SSL协议是由Netscape首先提出并实现的,Netscape使用MIME类型application/x-x509-ca-cert来表示CA证书,IE3.1以后开始支持SSL,起初Windows系统的数字证书文件(.crt和.cer)也采用相同的MIME类型,IE5.0以后MIME类型被改为application/pkix-cert这就造成Netscape安装根证书困难。不过这个问题好解决,只要在IIS里新注册application/x-x509-ca-cert的MIME类型就可以了。刚发的证书浏览器有时也会显示证书过期,这是因为浏览器判断证书有效是从证书有效起始时间的后一天开始,此外数字证书中的日期大都是GMT时间而不是本地时间,所以通常将本机时间向后调整一天这个问题就能解决,所以证书过期不仅仅可能表示太晚也可能表示太早。 覗d www.5y6s.net
摞O www.5y6s.net
一切都已经就绪,进入安全网页了,在IE的状态栏里应该有一个小锁,双击这个小锁能看到站点证书信息,同时也能看到整个证书链。现在也许会问"那么现在我怎么用SSL加密我的数据呢?",实际上现在浏览器和Web服务器之间交换的所有信息都已经被加密,SSL是工作在网络层与会话层之间的协议,它在TCP/IP和HTTP之间增加了一个加密层,所以对于工作在HTTP协议以上的用户而言,加密是完全透明的,所以请忘记"用SSL加密"这句话,除非直接在Socket上开发,比如写个网络蚂蚁之类的。 娆 www.5y6s.net
€:?www.5y6s.net
现在想用SSL实现更多的东西,不仅仅是加密。是申请浏览器(客户)证书的时候了,申请客户证书过程也不复杂,除了相同的名称,国家之类的还多一个EMail地址,如果用IE申请证书可能会有许多选项,其中有两个比较有意义,"允许私钥被导出"对与不在固定机器上上网的人比较有用,如果在一台机器上申请了证书,导出证书和私钥并安装到其他机器上就可以在其他机器上使用了。"用户保护"会让浏览器在使用的私钥时提示,这通常发生在加密和签名过程之前。证书安装过程通常都是自动的,安装完成后可以欣赏一下,在IE中打开Internet选项,选择内容一栏,按"证书"按钮",在个人一栏内应该有客户证书。 ??www.5y6s.net
+髊 www.5y6s.net
现在在IIS管理器中设置站点要求客户证书,然后访问站点,浏览器会弹出一个对话框,让选择要使用的客户证书,然后就进去了,也没什么不同。那么怎么样利用SSL实现身份认证呢?首先可以在IIS管理器中启用客户证书映射,将客户证书影射到NT帐号,可以映射某张证书,也可以映射所有根证书所签发的客户证书,如果在签发者列表中找不到根证书,需要运行SSLCA.exe(IIS4.0以上),以后的事就属于NT管理员的范畴了。如果不想用NT的安全机制,就需要获取对方客户证书的信息,然后进行判断。通常客户证书的信息由HTTPS_开头的服务器变量提供,如Apache Server,Domino等,可以查看文档或者写一个小的CGI程序列出所有的服务器变量。如果是IIS就更简单了: Et?www.5y6s.net
ㄗ www.5y6s.net
用 Request.ClientCertificate( Key[SubField] )可以访问想要的内容: 牡?www.5y6s.net
?www.5y6s.net
如可显示客户证书的国家代码。具体参数请在MSDN搜索ClientCertificate。
不需要写代码 m澱 www.5y6s.net
一,服务器上装有CA(Certificate Server) ^{7 www.5y6s.net
1,服务器上安装CA =M?www.5y6s.net
Win2000中带有CA的安装程序。单击Start,Control Pannel Add/Remove Programs兵单击Add/Remove Windows Compenents。当Windows Component Wizard出现时,选择证书服务(Certificate Services)。下一步中,安装需要指出服务器授权的类型,一般作为一个独立的Web服务器,选择Stand-alone root CA。然后,需要指定共享文件夹,这作为证书服务的配置数据存储位置,单击Next,安装完毕。 飣 www.5y6s.net
注意:自己建立CA 机构时,所给CA机构起的名是自己定义的,在客户端的IE中,在一开始并不属于客户端信任的根证书颁发机构,如果,客户端没有把该CA机构加为自己所信任的根证书颁发机构,那么在客户端访问该服务器上的网站时,会出现安全警告信息。 _}7 www.5y6s.net
2,建立并安装一个站点证书 個?www.5y6s.net
步骤如下: 荴?www.5y6s.net
A, 打开IIS,选定要安装证书的站点,单击右键,选择弹出菜单中的properties,在弹出的对话框中,单击directory security属性页,单击Server Certificate按钮,出现IIS Certificate Wizard对话框,这一步的操作,所完成的功能是生成一个向CA申请数字证书的密钥文件,文件以.txt的格式存于本机目录下。 眛?www.5y6s.net
B, 通过Certificate Server Enrollment的页面访问注册控件和它的表格: //?www.5y6s.net
在安装了Certificate Service的机器上可以从位于http://localhost/certsrv 的Certificate Server Administration Tools Web页面可以访问该注册控件。选择request a certificate 选项,在下一页面中选择advance request,这里需要注意的是,如果是给网站申请数字证书时必须选择该项,因为赋予网站的数字证书需要使用a步骤中所产生的特定的密钥文件,这样才能生成属于该网站的唯一的数字证书。而一般User certificate request 是针对需要访问该网站的客户设计的,分别有web browser certificate 和E-Mail Protection certificate 两种方式。客户采用web browser certificate方式申请对有SSL保护的网站的访问,而E-Mail Protection certificate是保护客户收发email时的信息传送。接下去页面的Advanced Certificate Requests 中我们选择Submit a certificate request using a base64 encoded PKCS #10 file or a renewal request using a base64 encoded PKCS #7 file。因为这种格式和在a步骤中所产生的密钥文件的加密格式一致。然后,可以通过browse把存在本机上的.txt密钥文件上载至网页上,递出申请。在最后的界面中,会被告知请求已经被接到并正在等待证书授权机构的批准。 w揽 www.5y6s.net
C, 微软的Certificate Service可以使用MMC来管理: ?s?www.5y6s.net
服务器提出的要求数字验证的请求传递到CA机构中,打开Start/Program/Administrative tools/Certification Authority后,可以看到pending request文件夹,这个文件夹包含了所有等待root授权机构批准的证书请求。如果CA认证机构觉得该网站的申请可行,则单击右键选择issue,这样,该文件就被移到了issued Certificates,表示申请成功,这个节点包含了所有被证书服务的管理员批准并被发布的证书。反之如果CA机构觉得该申请不可行,则选择Deny,该文件被转移到Failed request,表示申请失败,这个节点包含了所有被拒绝的证书请求。对申请成功并发布的数字证书而言,如果CA机构想取消该证书,可以单击右键选择revoke,则已申请成功的数字证书被移到revoke certificates文件夹内,这个节点包含了所有被发布但是又被撤销的证书。 /?www.5y6s.net
D, 提交数字验证的网站在等待一定时间后,依然可以通过http://localhost/certsrv来查看自己所申请的数字验证的进行情况。选择Check On A Pending Certificate选项并单击Next 按钮继续。从选项框中选择候选的请求,单击Next按钮继续。为下载该文件选择Base64 encoding并单击Download CA Certificate链接以开始下载过程。这样就从证书授权机构接到了服务器证书文件。打开IIS,选定已经得到数字验证的网站,单击右键后选择properties,在属性页directory security中,单击Server Certificate 按钮以启动Web服务证书向导,选择Process A Pending Request and Install Certificate选项。选择上一步骤中download下来的数字证书(即.cer文件)的存放路径,开始安装。安装成功后,directory security属性页中的view certificate和edit按钮由disable变为enable。整个网站的数字验证过程完毕。 覄?www.5y6s.net
3,关于certificate的属性设置 瀽u www.5y6s.net
点击directory security属性页的edit按钮,可以进行网站数字验证属性的设置。首先,如果选择了require secure channel(SSL)复选框,则http的形式将无法访问该站点,只有采用https的方式进行访问。如果不选择该项的话,则http和https两种方式并存,都可以进行对此网站的访问。如果选择了该项,则又有三种方式可供选择,分别是ignore client certificate,accept client certificate 以及require client certificate。Ignore client certificate表示不接受客户证书(默认):如果客户浏览器安装了客户证书,会返回一个Access Denied消息。Accept client certificate表示接受证书:不管客户是否安装了客户证书对服务器没有区别,访问在两种情况下都是允许的。Ignore client certificate表示需要客户证书:除非客户有一个被root CA(这里是证书服务器)授予的合法证书,否则访问被拒绝。客户要访问网站,必须得先从服务器得到数字验证,也即,客户端必须首先向要访问的网站提出要求数字验证的申请,在得到服务器端发回的用于两者间信息交互的数字证书后,才可以对该网站进行访问,否则,网站将拒绝该客户的访问。 鐪?www.5y6s.net
不同的网站可以针对这三个属性进行不同的设置。 泒?www.5y6s.net
4,客户端SSL的配置 憔?www.5y6s.net
在浏览器和Web站点之间开始SSL通信之前,客户端必须能够认出服务器的证书是合法的。要做到这一点,客户端必须和服务器的证书授权机构取得联系,在这种情况下是本地的证书服务器。如果没能实现前面的步骤,直接连到SSL站点,会首先接到安全警告信息。客户浏览器需要在浏览器的Trusted Root Store中安装证书。要安装证书,在安全警告对话框出现时,单击View Certificate按钮,就会出现一个对话框,该对话框中包含了证书的信息。单击Install Certificate 按钮以启动证书导入向导。 3 www.5y6s.net
对客户而言,SSL的配置就相对比较简单,客户可以选择申请数字证书,也可以不用,只是,如果客户所访问的某个网站设定了require client certificate属性,则客户必须在得到了该网站的数字验证后,才能对此进行访问,换言之,客户想得到访问权,就必须先向网站提出申请。 欠 www.5y6s.net
客户通过访问http://servername/certsrv来申请数字验证,它的操作过程和网站申请数字验证基本雷同,只是它不是选择Advance request这一项,而是使用User certificate request 下的web browser certificate选项,只要填写客户的一些相应信息后,就能递出申请,而当CA机构认证后,也是从网上直接下载相对应的数字证书至本机。这样,每当访问该网站,当弹出要求客户端数字验证的消息框后,客户选择已经下载过的数字证书,就可以进行对网站的访问了。 W惉 www.5y6s.net
q? www.5y6s.net
注意事项:如果网站的端口号不是默认的80,而是自己定义的话,则相应的也要给SSL Port 设定一个端口号,以示区别,而访问http和https时,所输入的端口号是不一致的。如果网站使用默认的80端口,则SSL也不需要配置特定的端口号,它的默认端口号为443。 苻?www.5y6s.net
??www.5y6s.net
二,服务器和装有CA(Certificate Server)的计算机独立 服 www.5y6s.net
网站申请数字证书的过程和前面部分一样。只是,上一部分的操作因为CA和服务器设在同一台机器上,所以,访问本机的http://localhost/certsrv就可以了,而这一部分,因为CA和服务器的计算机独立,所以,申请的时候也和客户端一样,远程访问http://CAname/certsrv ,其中的具体操作和上一部分一样。只是,在这种情况下,该网站如果设置了require client certificate,则客户就很难访问该网站了,因为客户端无法向该网站发出要求数字验证的申请。一般而言,最好采用accept client certificate。