金钱(警告)
** 状态:** 被贬值
此文章已被删除,不再保留。
理由
Ubuntu 12.04 已于 2017 年 4 月 28 日到期 (EOL)并且不再收到安全补丁或更新。
相反,看
本文可能仍然有用作为参考,但可能不遵循最佳实践或工作在这个或其他Ubuntu版本. 我们强烈建议使用最近的一篇文章写给你正在使用的Ubuntu版本。
- [如何在Ubuntu 16.04上加密流量以使用Stunnel进行Redis(https://andsky.com/tech/tutorials/how-to-encrypt-traffic-to-redis-with-stunnel-on-ubuntu-16-04#what-is-stunnel)
如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
美元
什么是隧道
Stunnel 程序旨在作为远程客户端和本地(inetd-startable)或远程服务器之间的 SSL 加密包装器工作,可以用来将 SSL 功能添加到常用的 inetd 服务器中,如 POP2, POP3 和 IMAP 服务器,而不会对程序的代码进行任何更改。
Stunnel基本上所做的是,它将任何不安全的TCP端口转化为使用OpenSSL包进行加密的安全加密端口。
步骤1:创建一个Ubuntu Droplet
到目前为止,我已经测试了它在Ubuntu 12.04 x32/x64,Ubuntu 12.10 x32/x64,Ubuntu 13.04 x32/x64上。
步骤 2:更新和升级 Ubuntu
使用这些命令更新您的 Ubuntu 包列表,并将现有包升级到最新版本:
1apt-get update
2apt-get upgrade
步骤 3:在您的 VPS 上安装 Stunnel
使用下面的代码安装 Stunnel 包:
1apt-get install stunnel4 -y
步骤 4:在 VPS 上配置 Stunnel
Stunnel 使用一个名为 **"stunnel.conf"**的文件来配置自己,默认情况下位于 "/etc/stunnel"。
在 **"/etc/stunnel"**目录中创建一个 **"stunnel.conf"**文件:
1nano /etc/stunnel/stunnel.conf
我们将使用SSL证书来识别自己到服务器,所以我们必须使用此行在 **"stunnel.conf"**文件中设置到该证书的路径(我们将在下一步创建证书文件):
1cert = /etc/stunnel/stunnel.pem
接下来我们指定一个服务用于Stunnel. 它可以是使用网络的任何服务,如邮件服务器,代理服务器等。
这里作为一个例子,我们将确保 Squid 代理服务器和使用 Stunnel 的客户端之间的流量,我们将在步骤 6 中解释如何安装和配置 Squid。
在为您要使用的服务设置一个名称后,您必须告诉 Stunnel 倾听该服务的哪个端口。
1[squid]
2accept = 8888
然后,根据您将使用安全隧道的服务,您必须在配置文件中指定该端口和IP地址,基本上Stunnel从安全端口接收包,然后将其转发到您指定的端口和IP地址。
Squid代理默认情况下在 localhost 和端口 3128 上运行,所以我们必须告诉 Stunnel 将接受的连接转发到该端口: 连接 = 127.0.0.1:3128
因此,总体而言,stunnel.conf
文件必须包含下面的行:
1client = no
2[squid]
3accept = 8888
4connect = 127.0.0.1:3128
5cert = /etc/stunnel/stunnel.pem
** 注意:** 不需要客户端 = 没有
部分,默认情况下 Stunnel 设置为服务器模式。
步骤五:创建SSL证书
Stunnel 使用 SSL 证书来保护其连接,您可以使用 OpenSSL 包轻松创建:
1openssl genrsa -out key.pem 2048
2openssl req -new -x509 -key key.pem -out cert.pem -days 1095
3cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
基本上,上述命令用于创建私钥,使用该密钥创建证书,并将两者合并为一个名为 **stunnel.pem
**的文件,用于 Stunnel。
** 注意:** 在创建证书时,您将被要求提供一些信息,例如国家和州,您可以输入任何您想要的信息,但当您被要求常见名称
时,您必须输入正确的主机名称或VPS地址。
此外,通过配置 **"/etc/default/stunnel4"**文件来启用 Stunnel 自动启动,请输入下面的命令以在文本编辑器中打开文件:
1nano /etc/default/stunnel4
更改可用到1:
1ENABLED=1
最后,重新启动 Stunnel 以使配置生效,使用此命令:
1/etc/init.d/stunnel4 restart
步骤6:安装Squid Proxy
使用下面的命令安装 Squid:
apt-get install squid3 -y
步骤 7: 配置客户端中的 Stunnel
** 注意:** 这解释了在 Windows 中安装和配置 Stunnel 作为客户端的过程,但 Stunnel 也可以安装在 Linux 甚至 Android 上,而且配置仍然相同。
为了让 Stunnel 与服务器进行通信,我们在步骤 5 中创建的 SSL 证书必须在客户端存在. 有许多方法可以从服务器获取 "stunnel.pem" 文件,但我们将使用 SFTP,这既简单又非常安全。
使用 SFTP 客户端,如 Filezilla,连接到您的服务器并下载位于 **"/etc/stunnel/"**目录中的 **"stunnel.pem"**文件到客户端。
这里也有一个关于 SFTP 的好教程:
從他們的網站(WEB下載。
随后,进入 Stunnel 文件夹并将下载的证书 "stunnel.pem" 移动到 Stunnel 文件夹。
在 Stunnel 文件夹中创建一个 **"stunnel.conf" ** 文件,如果没有,请使用文本编辑器(如 Notepad)打开该文件。
首先,我们告诉Stunnel我们的证书路径,在Windows中它位于Stunnel的目录中(请记住:在Ubuntu中它位于 **"/etc/stunnel/"**目录):
1cert = stunnel.pem
由于我们要设置一个客户端,我们必须告诉Stunnel这是一个客户端。
1client = yes
然后,就像服务器一样,我们必须指定我们想要使用的服务的配置。
首先我们指定服务的名称,然后是IP地址和端口,Stunnel应该在客户端上聆听:
1[squid]
2accept = 127.0.0.1:8080
接受端口可以是客户端计算机上的任何端口,只要它不被其他服务占用或防火墙阻止。
接下來,我們告訴Stunnel將來到這個端口的包傳送到我們的Stunnel伺服器的IP地址和端口。IP地址是您的伺服器(滴)的公共IP地址,在設定滴時分配給您,而端口是您在設定Stunnel在伺服器上的端口。
1connect = [Server’s Public IP]:8888
因此,客户端中的最终 "stunnel.conf" 文件应该是这样的:
1cert = stunnel.pem
2client = yes
3[squid]
4accept = 127.0.0.1:8080
5connect = [Server’s Public IP]:8888
保存并关闭文件并运行 stunnel.exe
。
现在我们的客户端已配置为使用安全的SSL隧道与虚拟服务器安全通信,从现在开始,当尝试连接到我们的VPS上的任何服务时,而不是直接连接到服务器的IP地址,我们必须使用Stunnel的接受
配置部分中指定的IP地址和端口为每个服务。
例如,当我们希望在云服务器上连接到 Squid 代理服务器时,我们必须配置我们的客户端连接到 127.0.0.1:8080,而 Stunnel 会通过安全隧道自动连接我们到指定的服务。