热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

利用IP别名托管多个SSL站点

文章标题:利用IP别名托管多个SSL站点。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
    人们对于结合使用 SSL 和基于名称的虚拟主机的兴趣与日俱增。有些人认为这是不可能的,但是在 Apache 中,您可以通过基于 IP 的虚拟主机实现虚拟主机。在这篇文章中,John Liao 和 Jim Miles 将为您介绍具体做法。

    在以前的 developerWorks 文章 “Secure remote data access for Domino®” 中,我们讨论了如何利用 Apache Web 服务器以节约预算的方式解决企业问题。(参见 参考资料 中的链接。)在本文中,我们继续讨论这个主题,解释在一台通过一块物理网卡连接到网络的服务器上,如何使用 Apache Web 服务器提供多个 Secure Sockets Layer(SSL)Web 站点。

    为什么需要在一台服务器上安置多个 SSL 站点?确实有企业需要在一台服务器上托管多个 SSL 站点吗?我们将通过一个真实的场景来解释这些问题。有创新精神的用户肯定会为这种思想找到更新颖的用途。

案例研究:两个应用程序,一台服务器

    在我们公司早期的一个项目中,人力资源(HR)部门希望为一个基于 Web 的福利应用程序提供外部互联网访问。用户大多是从公司网络内部访问这个 Web 应用程序的,但是偶尔也会通过外部互联网访问它。为了满足安全需求,我们决定将这个应用程序放在公司网络内部的一台服务器上,使用 Apache 的 HTTP 服务器构建一个反向代理服务器。反向代理服务器会终止 SSL 连接,再重新打开另外一个到托管 HR 应用程序的 Web 应用服务器的 SSL 连接。通过在 Apache Web 服务器中添加 mod_security 模块,即可将反向代理服务器改为应用网关,并为 Web 应用程序提供更高的安全性。HR 部门精心挑选了一个完全限定域名(FQDN),这个域名是用户友好的,易于记忆。随后,我们继续向前推进,获得了 SSL 证书,我们认为一切就这样圆满结束了。

    一年的时间很快就过去了。另一个企业 Web 应用程序出现了,它的需求与 HR 应用程序极为相似。它也需要为外部用户提供访问能力。外部用户的数量非常少。大多数访问都是在公司网络中进行的。我们立刻想到使用反向代理服务器为这个新的 Web 应用程序提供外部访问。

    但是,这个新的应用程序有点儿麻烦。首先,我们很关心数据中心的物理空间,竭力在一切应用程序的部署中寻求整合服务器的机会。其次,我们必须证明购买额外的反向代理服务器是值得的。这两个因素结合在一起,促使我们仔细研究如何使用现有的反向代理服务器满足新 Web 应用程序的需求。惟一的问题是,这个应用程序需要一个与现有 HR 应用程序不同的 FQDN。

    我们研究了几种为新的 Web 应用程序使用现有反向代理服务器的方法。第一种想法是,将新旧两个应用程序的域名都改为某个通用域名,比如 rp.company.com,并用上下文路径区分这两个应用程序。但是,原来的反向代理服务器用户强烈反对改变域名。如果改变域名,他们必须将域名变更情况通知公司中的所有人,还要修改所有印刷资料,以反映新的 URL。改变域名的成本非常高,而且可能会影响客户支持部门,他们不可避免地会收到大量用户投诉。另外,两个应用程序组都希望保留自己的 FQDN,他们认为自己精心选择的 FQDN 比这种一般化的 URL 更醒目,而且也是宣传推广这些 Web 应用程序的有效手段。

    另一个想法是:为什么不注册一个 DNS 入口,让它将新的域名指向现有的服务器?这个想法很快就被否决了。在 SSL 应用程序中,SSL 证书必须与用户请求的 URL 匹配,否则会弹出一个警告消息,指出所请求的 URL 与 SSL 证书的域名不匹配。由于弹出式广告和恶意软件日益猖獗,公司中每个训练有素的人都会取消产生弹出警告框的 Web 交互。根据公司架构标准的要求,生产性 Web 应用程序严禁生成弹出警告消息。

    另一个建议是:使第二个 SSL 站点驻留在运行第一个站点的服务器的不同端口上。但是,我们觉得这会给用户带来过多的困扰,用户很难同时记住站点 URL 和端口号。如果用户只输入 URL 而没有输入端口号,他们就会被重定向到 HR 应用程序。这会导致很多问题。

解决方案:IP 别名

    最终敲定的解决方案是 IP 别名(IP aliasing)。在寻找这个解决方案时,最需要技巧的部分就是确定正确的术语。最初引入这个概念时,我们听到了虚拟接口(virtual interface)虚拟 IP(virtual IP) 等术语。我们艰难地寻找着关于这些概念的信息;但我们最终意识到,我们正在寻找的东西是通常被称为 IP 别名功能的概念,这帮助我们找到了关于该主题的更多文献。IP 别名有时候也称为网络接口别名(network interface aliasing)逻辑接口(logical interface)

Linux 系统上的 IP 别名

混杂模式:一个警告
配置了多个 IP 地址时,某些以太网卡会进入所谓的混杂模式(promiscuous mode)。在混杂模式下,网卡将捕捉本地网络上的所有通信流量。这可能导致服务器易受网络上其他主机转发的攻击。大多数嗅探器和网络监视软件会使以太网卡进入混杂模式,以便捕捉所有网络通信包。

    IP 别名背后的概念很简单:可以在一个网络接口上配置多个 IP 地址。这样就能够在使用单一接口的同一个服务器上运行多个 Web 服务器。设置 IP 别名也非常容易。只需配置系统上的网络接口,让它监听额外的 IP 地址。在 Linux™ 系统上,可以使用标准的网络配置工具(比如 ifconfigroute 命令)添加 IP 别名,也可以利用图形化网络管理工具。

    在一般情况下,会为每块以太网卡配置一个物理单元号。要想在已经配置的以太网卡上添加额外的 IP 别名,应该为一个接口配置同样的物理单元号,但是要用一个逻辑单元号来限定它。例如,如果在物理单元号为 eth0 的以太网卡上已经配置了一个现有的 IP 地址,那么可以通过添加一个逻辑单元号 :1 来创建 IP 别名,如清单 1 所示。可以通过递增逻辑单元号来添加更多的 IP 地址。(注意,需要作为 root 用户登录。)



清单 1. 在现有的网络接口上添加额外的 IP 地址

				
ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0
    

    在您正在配置的系统上,Linux 内核必须支持 IP 别名,这样才能使用这种技术。如果内核没有提供这种支持,可能需要重新构建内核。要想了解您的内核是否支持 IP 别名,可检查 /proc/net/alias* 文件是否存在。

配置了新的 IP 地址之后,要为新的接口设置路由,如清单 2 所示。



清单 2. 为新的 IP 地址添加路由

				
route add -host 192.168.0.2 dev eth0:1
    

在创建新的 IP 地址之后,还需要在 /etc/hosts 文件中给这个新地址命名,如清单 3 所示。



清单 3. 为新的 IP 地址命名

				
192.168.0.1 primaryserver
192.168.0.2 secondaryserver
    

[1] [2] 下一页


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
author-avatar
tomorrow
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有