如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道

状态:已弃用

本文已弃用,不再维护。

原因

Ubuntu 12.04 于 2017 年 4 月 28 日结束生命周期 (EOL),不再接收安全补丁或更新。

请参阅

本文作为参考可能仍然有用,但可能不遵循最佳实践或适用于此或其他 Ubuntu 版本。我们强烈建议使用为您正在使用的 Ubuntu 版本编写的最新文章。

  • 如何在 Ubuntu 16.04 上使用 Stunnel 加密到 Redis 的流量

如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

  • 如何从 Ubuntu 12.04 升级到 Ubuntu 14.04。
  • 如何从 Ubuntu 14.04 升级到 Ubuntu 16.04
  • 如何将服务器数据迁移到支持的版本

什么是隧道

Stunnel 程序旨在用作远程客户端和本地(inetd 可启动)或远程服务器之间的 SSL 加密包装器。它可用于将 SSL 功能添加到常用的 inetd 守护程序,如 POP2、POP3 和 IMAP 服务器,而无需更改程序代码。

Stunnel 基本上所做的是使用 OpenSSL 包进行加密,将任何不安全的 TCP 端口转换为安全的加密端口。它有点像在特定端口上运行的小型安全 VPN。

第 1 步:创建 Ubuntu Droplet

到目前为止,我已经在 Ubuntu 12.04 x32/x64、Ubuntu 12.10 x32/x64、Ubuntu 13.04 x32/x64 上对其进行了测试。

第 2 步:更新和升级 Ubuntu

使用这些命令更新 Ubuntu 的包列表,并将现有包升级到最新版本:

apt-get update
apt-get upgrade

第 3 步:在您的 VPS 上安装 Stunnel

使用以下代码安装 Stunnel 包:

apt-get install stunnel4 -y

第 4 步:在 VPS 上配置 Stunnel

Stunnel 使用名为“stunnel.conf”的文件进行自我配置,该文件默认位于“/etc/stunnel”中。

在“/etc/stunnel”目录下创建一个“stunnel.conf”文件:

nano /etc/stunnel/stunnel.conf

我们将使用 SSL 证书向服务器表明我们自己的身份,因此我们必须使用此行在 \stunnel.conf 文件中设置该证书的路径(我们将在下一步中创建证书文件):

cert = /etc/stunnel/stunnel.pem

接下来我们指定与 Stunnel 一起使用的服务。它可以是任何使用网络的服务,例如邮件服务器、代理服务器等。

作为示例,我们将使用 Stunnel 保护 Squid 代理服务器和客户端之间的流量。我们将在第 6 步中解释如何安装和配置 Squid。

为您要使用的服务设置名称后,您必须告诉 Stunnel 监听该服务的端口。这可以是 65535 端口中的任何一个,只要它没有被其他服务或防火墙阻止:

[squid]
accept = 8888

然后根据您要使用安全隧道的服务,您必须在配置文件中指定端口和 IP 地址基本上 Stunnel 从安全端口获取数据包,然后将其转发到端口和 IP 地址您指定的服务。

默认情况下,Squid 代理在本地主机和端口 3128 上运行,因此我们必须告诉 Stunnel 将接受的连接转发到该端口:

因此,总体而言,\stunnel.conf 文件必须包含以下行:

client = no
[squid]
accept = 8888
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem

注意:client=no 部分不是必需的,Stunnel 默认设置为服务器模式。

第 5 步:创建 SSL 证书

Stunnel 使用 SSL 证书来保护其连接,您可以使用 OpenSSL 包轻松创建它:

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

基本上,上面的命令用于创建私钥,使用该密钥创建证书并将它们两者组合成一个名为“stunnel.pem”的文件以与 Stunnel 一起使用。

注意:创建证书时,系统会要求您提供一些信息,例如国家和州,您可以输入任何您喜欢的信息,但是当要求“通用名称”时,您必须输入正确的主机名或 Droplet 的 IP 地址(虚拟专用服务器)。

另外,通过配置“/etc/default/stunnel4”文件启用Stunnel自动启动,输入以下命令在文本编辑器中打开该文件:

nano /etc/default/stunnel4

并将 ENABLED 更改为 1:

ENABLED=1

最后,重启 Stunnel 使配置生效,使用以下命令:

/etc/init.d/stunnel4 restart

第 6 步:安装 Squid 代理

使用以下命令安装 Squid:

apt-get install squid3 -y

第 7 步:在客户端配置 Stunnel

注意:这解释了在 Windows 中作为客户端安装和配置 Stunnel 的过程,但 Stunnel 也可以安装在 Linux 甚至 Android 中,配置仍然保持不变。唯一的区别是配置 Stunnel 所需的 \stunnel.conf 文件的位置。

为了让 Stunnel 与服务器通信,我们在第 5 步中创建的 SSL 证书必须存在于客户端。从服务器获取 \stunnel.pem 文件的方法有很多种,但我们将使用 SFTP,它既简单又非常安全。

使用 Filezilla 等 SFTP 客户端,连接到您的服务器并将位于 \/etc/stunnel/ 目录中的 \stunnel.pem 文件下载到客户端。

这里还有一个关于 SFTP 的很好的教程:

如何使用 SFTP 与远程服务器安全地传输文件

从他们的网站下载 Stunnel。

在任何你喜欢的地方安装 Stunnel。然后转到 Stunnel 文件夹并将下载的证书 \stunnel.pem 移动到 Stunnel 文件夹。

如果 Stunnel 的文件夹中不存在,请在 Stunnel 的文件夹中创建一个 \stunnel.conf 文件。使用文本编辑器(如记事本)打开该文件。

首先,我们告诉 Stunnel 我们证书的路径,在 Windows 中是在 Stunnel 的目录中(提醒:在 Ubuntu 中是在“/etc/stunnel/”目录中):

cert = stunnel.pem

由于我们要设置一个客户端,所以我们必须告诉 Stunnel 这是一个客户端。将以下行放在配置文件中:

client = yes

然后就像服务器一样,我们必须指定我们要使用的服务的配置。

首先我们指定服务的名称,然后是 IP 地址和端口,Stunnel 应该在客户端上监听:

[squid]
accept = 127.0.0.1:8080

接受端口可以是客户端计算机上的任何端口,只要它没有被其他服务占用或被防火墙阻止即可。

接下来,我们告诉 Stunnel 将到达此端口的数据包转发到我们的 Stunnel 服务器的 IP 地址和端口。 IP地址是你的服务器(droplet)的公网IP地址,是你在设置droplet时分配给你的,port是你在服务器配置Stunnel时指定的端口。在我们的例子中它是 8888 所以我们要告诉 Stunnel 连接到那个端口:

connect = [Server’s Public IP]:8888

所以客户端中最终的“stunnel.conf”文件应该是这样的:

cert = stunnel.pem
client = yes
[squid]
accept = 127.0.0.1:8080
connect = [Server’s Public IP]:8888

保存并关闭文件并运行“stunnel.exe”。

就是这样。现在我们的客户端已配置为使用安全 SSL 隧道与虚拟服务器进行安全通信。从现在开始,当尝试连接到我们 VPS 上的任何服务时,我们必须使用 Stunnel 的每个服务配置的“接受”部分中指定的 IP 地址和端口,而不是直接连接到服务器的 IP 地址。

例如,当我们想要连接到云服务器上的 Squid 代理时,我们必须将客户端配置为连接到 127.0.0.1:8080,Stunnel 会自动通过安全隧道将我们连接到为该端口指定的服务。在这里,您可以将您的网络浏览器配置为使用 IP 127.0.0.1 和端口 8080 作为代理来保护您的网络流量。

提交人:Nima Karimi

©2015-2025 艾丽卡 support@alaica.com