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

2023-11-09

Status:已弃用

本文已弃用,不再维护。

Reason

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 加密包装器。它可用于向常用的 inetd 守护进程(如 POP2、POP3 和 IMAP 服务器)添加 SSL 功能,而无需对程序代码进行任何更改。

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”.

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

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 将接受的连接转发到该端口: 连接=127.0.0.1:3128

所以总体来说“stunnel.conf”文件必须包含以下行:

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

Note: The 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 一起使用。

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

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

nano /etc/default/stunnel4

并将 ENABLED 更改为 1:

ENABLED=1

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

/etc/init.d/stunnel4 restart

第6步:安装Squid代理


使用以下命令安装 Squid:

apt-get install squid3 -y

第7步:在客户端配置Stunnel


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

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

使用 SFTP 客户端(例如 Filezilla)连接到您的服务器并下载“stunnel.pem”文件位于“/etc/stunnel/”目录到客户端。

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

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

下载隧道从他们的网站。

将 Stunnel 安装在您喜欢的任何地方。然后进入Stunnel文件夹并移动下载的证书“stunnel.pem”到 Stunnel 文件夹。

创建一个“stunnel.conf”如果 Stunnel 文件夹中不存在该文件,则将其添加到该文件夹​​中。使用文本编辑器(例如记事本)打开该文件。

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

cert = stunnel.pem

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

client = yes

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

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

[squid]
accept = 127.0.0.1:8080

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

接下来,我们告诉 Stunnel 将传入此端口的数据包转发到我们的 Stunnel 服务器的 IP 地址和端口。 IP 地址是您的服务器(Droplet)公共 IP 地址,该地址是在设置 Droplet 时分配给您的,端口是您在服务器中配置 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 会自动通过安全隧道将我们连接到为该端口指定的服务。您可以在此处将 Web 浏览器配置为使用 IP 127.0.0.1 和端口 8080 作为代理,以保护您的 Web 流量。

提交者:http://about.me/nimak”>尼玛·卡里米
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道 的相关文章

随机推荐

  • Python if..else 语句

    决策是计算机编程最基本的概念之一 Python 支持其他语言中常见的流程控制语句 但进行了一些修改 这if控制语句是最基本和众所周知的语句之一 用于根据特定条件执行代码 在这篇文章中 我们将回顾一下基础知识ifPython 中的语句 Pyt
  • Linux 中的 Echo 命令及示例

    The echo命令是Linux中最基本 最常用的命令之一 参数传递给echo打印到标准输出 echo常用于 shell 脚本中显示消息或输出其他命令的结果 回显命令 echo是 Bash 和大多数其他流行 shell 如 Zsh 和 Ks
  • 如何检查你的 Ubuntu 版本

    当您第一次登录 Ubuntu 系统时 在进行任何工作之前 最好检查一下计算机上运行的 Ubuntu 版本 新的 Ubuntu 版本每六个月发布一次 而 LTS 长期支持 版本每两年发布一次 LTS 版本在桌面和服务器上均受支持五年 其他标准
  • 如何在 Debian 9 上安装和使用 Docker

    Docker 是一个容器化平台 允许您快速构建 测试和部署应用程序作为可移植 自给自足的容器 几乎可以在任何地方运行 Docker 是容器技术事实上的标准 它是 DevOps 工程师及其持续集成和交付管道的重要工具 在本教程中 我们将指导您
  • Linux 中的定位命令

    在 Linux 上工作时最常见的操作之一是搜索文件和目录 Linux 系统上有多个命令允许您搜索文件 其中 find 和locate 是最常用的命令 The locate命令是按名称搜索文件和目录的最快 最简单的方法 在这篇文章中 我们将解
  • Linux 中的 Du 命令

    The du命令是 磁盘使用情况 的缩写 报告给定文件或目录使用的估计磁盘空间量 它对于查找占用大量磁盘空间的文件和目录非常有用 如何使用du命令 的一般语法为du命令如下 du OPTIONS FILE 如果给定FILE是一个目录 du将
  • 如何在 CentOS 7 上安装和配置 VNC

    在本教程中 我们将引导您完成在 CentOS 7 系统上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计
  • 如何在 CentOS 7 上安装 Iptables

    从 CentOS 7 开始 防火墙D取代 iptables 成为默认的防火墙管理工具 FirewallD 是一个完整的防火墙解决方案 可以使用名为firewall cmd 的命令行实用程序进行控制 如果您更熟悉 Iptables 命令行语法
  • 如何用 Java 编写您的第一个程序

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 Java是一种成熟且设计良好的编程语言 用途广泛 从课堂学习到运行任何规模的商业应用程序 它的独特优势之一是它是跨平台的 一旦创建了 Java 程序 就可以在许多操作系统上运行它 包括
  • 如何在 Ubuntu 12.10 上设置 ownCloud 5

    什么是Red Means 用户需要输入或自定义的行将位于red在本教程中 其余的大部分应该是可复制和粘贴的 关于ownCloud ownCloud 是一种开源数据存储解决方案 类似于 Dropbox 或 Google Drive 人们可以获
  • Android RecyclerView 示例 - 多种 ViewType

    到目前为止 我们已经在一个视图中显示了相同类型的视图回收视图 在本教程中 我们将在 RecyclerView 中实现异构布局 回收视图 具有异构布局的 RecyclerView 通常用于显示节标题和详细信息 两者都需要不同的布局 因此需要不
  • 如何在 Ubuntu 18.04 上安装 Node.js

    介绍 Node js是一个用于通用编程的JavaScript平台 允许用户快速构建网络应用程序 通过在前端和后端利用 JavaScript Node js 使开发更加一致和集成 在本指南中 您将了解在 Ubuntu 18 04 服务器上安装
  • 如何在 CentOS 7 上安装 WordPress

    介绍 WordPress 是一个使用 PHP 和 MySQL 的免费开源网站和博客工具 WordPress 是目前互联网上最流行的 CMS 内容管理系统 拥有超过 20 000 个插件来扩展其功能 这使得 WordPress 成为快速轻松地
  • Java二维码生成器-zxing示例

    今天我们将研究Java QR 码生成器程序 如果您精通技术和小工具 那么您一定知道二维码 如今 您随处都可以找到它 在博客 网站 甚至在一些公共场所 这在移动应用程序中非常流行 您可以使用 QR 码扫描仪应用程序扫描 QR 码 它会显示文本
  • Python 位运算符

    Python 按位运算符用于对整数执行按位计算 将整数转换为二进制格式 然后逐位执行运算 因此称为按位运算符 Python 按位运算符仅适用于整数 最终输出以十进制格式返回 Python 按位运算符也称为二元运算符 Python 位运算符
  • 如何在 Ubuntu 14.04 上使用 UFW 设置防火墙

    介绍 UFW 即简单防火墙 是一个接口iptables旨在简化配置防火墙的过程 尽管iptables虽然是一个可靠且灵活的工具 但对于初学者来说 学习如何使用它来正确配置防火墙可能会很困难 如果您希望开始保护您的网络 并且不确定使用哪个工具
  • 如何在 Ubuntu 14.04 上将 MySQL 或 MariaDB 与 Django 应用程序一起使用

    介绍 Django 是一个用于快速创建 Python 应用程序的灵活框架 默认情况下 Django 应用程序配置为将数据存储到轻量级 SQLite 数据库文件中 虽然这在某些负载下效果很好 但更传统的 DBMS 可以提高生产性能 在本指南中
  • Spring MVC @RequestMapping 注解示例,包含控制器、方法、标头、参数、@RequestParam、@PathVariable

    RequestMapping is one of the most widely used Spring MVC annotation org springframework web bind annotation RequestMappi
  • Java 中的 SQL 注入以及如何轻松预防

    什么是 SQL 注入 SQL注入是十大 Web 应用程序漏洞之一 简单来说 SQL注入是指通过用户输入的数据在查询中注入 插入SQL代码 它可以发生在任何使用关系数据库 如 Oracle MySQL PostgreSQL 和 SQL Ser
  • 如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道

    Status 已弃用 本文已弃用 不再维护 Reason Ubuntu 12 04 已于 2017 年 4 月 28 日终止生命周期 EOL 并且不再接收安全补丁或更新 请参阅 本文作为参考可能仍然有用 但可能不遵循最佳实践或适用于此版本或