Stunnel加密封装器的安装设置和使用

Stunnel作为一个小巧的跨平台(Unix/Linux和Windows)的开源(GNU)项目,提供了以下2个主要功能:

针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel可提供安全的加密连接(基于OpenSSL)。

针对有访问限制的局域网,Stunnel提供加密的SSL连接解除防火墙和代理的限制直接和远端服务器理论上的任何网络服务连接。我们知道一般局域网都会开放443端口用于加密的HTTP连接,我们可以利用这点用Stunnel和远程端口443创建一个SSL连接,防火墙和代理会认为这个连接是正常的HTTPS连接而允许通过。

>>去网络安全工具百宝箱看看其它安全工具

Stunnel的安装

Stunnel的Windows版本可以点此下载。我们需要把下载下来的Stunnel程序同时安装在服务器端和客户端。安装过程比较简单,一路Next就行。假设我们把Stunnel安装在默认路径C:\Program Files\stunnel\下。具体安装步骤见下:

 

访问控制以及安全证书的生成

Stunnel使用OpenSSL提供了基于安全证书的访问控制。遵循SSL协议,客户端和服务器端都可以要求对方提供安全证书用以验证对方是否可信。而在大多数应用中往往只有服务器端需要验证客户端的安全证书以确认连接者可以被信任,所以我的这篇文章主要讲解服务器端验证的设置。客户端验证的设置方法和步骤同服务器端相反,这里就不再叙述了。

决定了如何进行访问控制,下一个步骤我们需要一个安全证书,你可以选择以下几个方法得到安全证书:

1.Stunnel安装程序自带的(C:\Program Files\stunnel\stunnel.pem)

2.OpenSSL成生的安全证书

3.从CA处购买的安全证书

一般来说不推荐方法1,因为通用性的Stunnel安全证书不能提供任何安全保证因为人人都可以下载获得。而最安全的第3种方法需要花费不少银子,因此这里我们使用方法2:在不花钱的情况下得到***的安全性。Stunnel的Windows版本并没有提供OpenSSL程序,所以要生成安全证书需要通过以下途径。

1. 使用网页服务生成安全证书

用Stunnel提供的网页服务(http://www.stunnel.org/pem/),输入所有相关信息然后Stunnel的服务器会生成所需的安全证书,具体见下图:

#p#

点击Generate stunnel.pem File按钮等待几秒钟系统会出现以下页面:

 

拷贝所有文本框内的内容另存为stunnel.pem文件,这个就是你所需要的安全证书了。正如Stunnel网页上所说,这种方法并不安全,因为生成的证书是通过没有加密的通道传输的,任何人都可以从中窃取这个证书。

2. 使用Unix/Linux生成安全证书

第二种方法需要一台安装了OpenSSL的Unix或者Linux主机。运行以下命令生成安全证书:

  1. openssl req -new -x509 -days 365 -nodes  
  2.             -out ${FILE_NAME}.pem -keyout ${FILE_NAME}.pem 

${FILE_NAME}.pem是自定义生成的安全证书的名字,其他各个参数的意义如下:

◆-new:生成新的密匙

◆-x509:生成X509安全证书

◆-days 365:有效期1年

◆-nodes:不设置密码

◆-out:生成的文件名

◆-keyout:存放密匙的文件名

运行这个命令后需要回答以下问题,然后安全认证会自动存放在${FILE_NAME}.pem文件中。

#p#

在验证安全证书有效性时,Stunnel使用Hash值搜索证书,所以我们还需要运行以下2条命令得到这个证书的Hash值,然后重命名这个文件:

  1. hash_name=`openssl x509 -hash -noout -in ${FILE_NAME}.pem `  
  2. mv ${FILE_NAME}.pem $hash_name.0 

这样最终得到的安全证书就是XXXXXXXX.0,其中X代表16进制数字。以上2段脚本可以合在一起变成一个批处理文件。

我们需要注意的是,生成的安全证书需要同时拷贝到客户端和服务器端。客户端需要向服务器端发送这个证书,而服务器端需要检查客户端证书是否和服务器端证书一致。

客户端配置

编辑Stunnel的配置文件(位置在C:\Program Files\stunnel\stunnel.conf):

  1. [CLIENT]  
  2. accept=22443 
  3. connect=proxyhost:8080  
  4. client=yes 
  5. ccert=c:\program files\stunnel\${FILE_NAME}.pem  
  6. protocol=connect 
  7. protocolHost=192.234.191.174:443 

其中各个参数的含义为:

◆accept:接受的端口(在这个例子中,如果访问远程服务需要连接到localhost端口22443)。

◆connect:远程服务器的IP地址和端口(注意这里我们使用标准HTTPS端口)。

◆client:告诉stunnel这个配置是client配置。

◆cert:连接是提供给对方的安全证书。这个证书可以是${FILE_NAME}.pem文件名也可以直接用XXXXXXXX.0文件。

如果客户端需要通过HTTPS代理连接,需要使用以下配置文件:

  1. [CLIENT]  
  2. accept=22443 
  3. connect=proxyhost:8080  
  4. client=yes 
  5. ccert=c:\program files\stunnel\${FILE_NAME}.pem  
  6. protocol=connect 
  7. protocolHost=192.234.191.174:443 

这里connect处需要填入代理服务器的IP和端口,protocolHost处填入远程服务器的IP和端口。配置结束后运行stunnel程序,然后双击任务栏的图可以查看日志:

#p#

服务器端配置

服务器端配置比客户端稍微麻烦些。首先我们需要把先前生成的XXXXXXXX.0证书拷贝到一个文件夹中(假设这个文件夹叫CApath),所有可信任的证书都应该拷贝到这里。然后我们需要配置C:\Program Files\stunnel\stunnel.conf文件:

  1. [SERVER]  
  2. accept=443 
  3. cert=stunnel.pem  
  4. connect=localhost:21  
  5. CApath=c:\program files\stunnel\CApath  
  6. CRLpath=c:\program files\stunnel\CRLpath  
  7. verify=3 

以下是这个配置各个参数的含义:

◆accept:接受连接请求的端口(应该和客户端一致)

◆cert:服务器端发送给客户端的安全认证。因为我们的客户端不验证这个证书,所以使用标准的stunnel证书就可以。

◆connect:连接到本地或者其他局域网的网络服务(这里我们使用本地FTP服务)。

◆CApath:保存了所有可信安全证书的文件夹(所有文件名都应该是XXXXXXXX.0格式)。

◆CRLpath:保存了所有已经撤销的安全证书的文件夹(所有文件名都应该是XXXXXXXX.0格式)。这个的主要作用是当你把安全证书发布给客户以后你依然可以拒绝他的连接请求。

◆verify:验证级别。1表示如果客户提供安全证书则验证安全证书。2表示客户必须提供安全证书并验证安全证书,这个模式适合于验证从CA处购买的安全证书。3表示客户必须提供安全证书并根本本地CAPath和CRLpath来验证证书是否合法。毫无疑问这里我们应该选3。

设置完成后我们可以启动stunnel程序然后进行下简单的测试。

连接测试

首先确认服务器端和客户端的stunnel程序都已经启动,并且提供服务的网络应用程序也已经启动(这里我们是FTP服务)。打开命令行,输入:

  1. telnet localhost 22443 

这时你应该能得到一个到FTP服务器的TCP连接,同时也宣告大功告成:)以上这个例子可以使在禁止FTP的局域网中使用FTP服务,当然任何安装在服务器端的TCP服务都可以通过这种方法使用。由于Stunnel使用加密过的连接,因此没有人能看到服务器端和客户端传送的数据。需要注意的是,有些防火墙会在没有流量的时候关闭连接,因此为了长期保持连接尽量不停发送数据(简单的heartbeat就可以)。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/137109.html<

赞 (0)
管理的头像管理
上一篇2025-03-02 09:52
下一篇 2025-03-02 09:53

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注