`
iwebcode
  • 浏览: 2071509 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

虚拟主机安全方案

 
阅读更多
  作者:zhanhailiang 日期:2013-02-04

为什么不能在相同IP地址虚拟主机下多个域名上使用SSL证书?

查看ApacheFAQ

Why is it not possible to use Name-Based Virtual Hosting to identify differentSSLvirtual hosts?
Name-Based Virtual Hosting is a very popular method of identifying different virtual hosts. It allows you to use the same IP address and the same port number for many different sites. When people move on toSSL, it seems natural to assume that the same method can be used to have lots of differentSSLvirtual hosts on the same server.
It comes as rather a shock to learn that it is impossible.
The reason is that theSSLprotocol is a separate layer which encapsulates theHTTPprotocol. So theSSLsession is a separate transaction, that takes place before theHTTPsession has begun. The server receives anSSLrequest on IP address X and port Y (usually 443). Since theSSLrequest does not contain any Host: field, the server has no way to decide whichSSLvirtual host to use. Usually, it will just use the first one it finds, which matches the port and IP address specified.
You can, of course, use Name-Based Virtual Hosting to identify many non-SSLvirtual hosts (all on port 80, for example) and then have a singleSSLvirtual host (on port 443). But if you do this, you must make sure to put the non-SSLport number on the NameVirtualHost directive, e.g.
NameVirtualHost 192.168.1.1:80
Other workaround solutions include:
Using separate IP addresses for differentSSLhosts. Using different port numbers for differentSSLhosts.

即因为SSL协议层是在HTTP协议层下面的,首先进行SSL连接,SSL模块在Web模块之前和浏览器进行通讯并交换证书、建立加密隧道。众所周知,Web服务器是通过HTTP数据包中的”Host”字段来区分虚拟主机的。而SSL模块在把服务器证书发送到浏览器时,还没有收到任何关于HTTP的数据包,当然也就不知道虚拟主机的域名,因此SSL模块只能固定的将一张SSL证书发送到浏览器,而不能根据域名有选择性的发送证书。因此,无法在一个IP地址的默认SSL443端口下为多个虚拟主机配置多张证书。

由于一个IP与一个端口只能对应一张SSL证书,因此我们可以采用以下方式解决:

1、为需要SSL加密的虚拟主机配置不同的IP地址,端口都使用443。例如:www.domain1.com的SSL使用69.96.69.1:443;www.domain2.com的SSL使用69.96.69.2:443,通过https://www.domain1.com和https://www.domain2.com就可以正常访问这2个SSL加密网站了。

2、如果只有一个IP地址,可以为多个网站配置不同的SSL端口。例如:www.domain1.com的SSL使用69.96.69.1:443;www.domain2.com的SSL使用69.96.69.1:800,通过https://www.domain1.com和https://www.domain2.com:800访问这2个SSL网站了。

如果多个虚拟主机使用一个主域名下的不同个子域名,您可以申请通配符Wildcard SSL证书

例如:有2个虚拟主机mail.domain.com、bill.domain.com,你申请一张*.domain.com的证书,按照前面所说的原理,2个虚拟主机都使用同一个IP和默认的443端口,当浏览器访问IP:443端口时,SSL模块把通配符Wildcard SSL证书传送给浏览器,建立合法的SSL隧道,然后WEB模块接收到HTTP数据包时判断域名选择虚拟主机。

原理是可行的,不幸的是你无法按照这个原理对IIS进行配置,IIS不支持SSL端口配置域名。如果仅依靠IIS,你不得不使用上面的2个方法(不同的IP地址或者不同的端口号)。

如果仅有1个IP地址,采用方法2时,mail.domain.com使用443端口,bill.domain.com使用1000端口,你会发现一个现象,由于SSL端口不区分域名,因此无论访问https://mail.domain.com还是https://bill.domain.com都是指向mail.domain.com网站内容;而无论 访问https://mail.domain.com:800还是https://bill.domain.com:800都是指向bill.domin.com网站内容的。当然这也有好处,你可以在abc.domain.com下放一个程序,程序判断一下域名,如果用户访问https://bill.domain.com就马上跳转到https://bill.domain.com:800,不会有任何的安全警告。

幸运的是,通过SSL反向代理服务器,你可以解决这个问题。就是使用第三方的SSL模块来替代IIS处理SSL加密,将证书安装反向代理服务器中,浏览器访问SSL反向代理服务器,然后反向代理服务器使用HTTP协议访问你的Web服务器。你可以选择SSL反向代理硬软件有:

  1. 支持SSL的负载均衡器,如F5、ArrayNetworks
  2. 使用ISA Server 2004软件。
  3. 使用免费的Squid软件。
  4. 使用免费的Stunnel软件。
  5. 使用PortTunnel软件。

当然,也可以使用多域名SSL

多域名SSL证书与通配型证书是不同的,通配型SSL证书支持 *.domain.com,即支持同一域名下的所有子域,而多域名证书则是任何域名,不仅限于子域,因为一般一个单位有多个域名和一台虚拟主机上有多个不同的用户的域名,如:domain.com、domain.cn、domain.com.cn、domain.net、domain.net.cn、mydomain.com、domain.us等等。

参考文档:

分享到:
评论

相关推荐

    kangle虚拟主机空间销售网站源码.rar

    总的来说,这个源码为企业或个人提供了快速构建虚拟主机销售平台的解决方案,涵盖了从产品展示、购买到用户管理的全套流程,同时也考虑了网站运营的安全性和性能。通过深入理解和定制,可以适应不同业务场景的需求,...

    php虚拟主机的配置

    "PHP 虚拟主机的配置" PHP 虚拟主机是指在一台服务器上配置多个虚拟主机,以便于不同的域名或 IP 地址对应不同的网站或应用程序...同时,虚拟主机也可以提高网站的安全性,因为每个虚拟主机可以使用不同的权限和配置。

    虚拟主机基础简介ppt

    总结来说,虚拟主机是一种经济高效的网站解决方案,但选择时需谨慎考虑其功能、性能和价格,以确保满足业务需求并提供优质用户体验。对于企业而言,选择合适的虚拟主机是迈入互联网世界的关键一步。

    n点虚拟主机管理系统

    "n点虚拟主机管理系统"正是为解决这一难题而生的创新解决方案。这款系统整合了产品自动化开通、管理、续费、升级等一系列功能,极大地提升了工作效率,降低了管理难度。 一、系统概述 n点虚拟主机管理系统是一款专...

    网络虚拟主机实时开通系统 v1.1

    总的来说,网络虚拟主机实时开通系统 v1.1 是一套旨在提升网络虚拟主机管理效率,降低运维成本,保障数据安全的综合性解决方案。通过其自动化、实时开通、安全管理及扩展性等特点,满足了现代互联网环境下的各种需求...

    清竹虚拟主机管理系统

    "清竹虚拟主机管理系统"是一款专为管理服务器资源而设计的软件工具,它集成了多项功能,旨在简化网络管理员的工作,提高服务器管理的效率。在IT行业中,虚拟主机管理系统是至关重要的,它允许用户在一台物理服务器上...

    易方虚拟主机管理系统.zip

    总的来说,《易方虚拟主机管理系统》是一个强大而实用的工具,它为个人服务器用户提供了全面的解决方案,使得网站管理变得更加简单高效。无论你是新手还是有经验的管理员,都能从中受益,提升你的服务器管理体验。

    IIS虚拟主机设置 参考资料

    ### IIS虚拟主机设置知识点详解 #### 一、IIS虚拟主机概述 - **IIS简介**:IIS(Internet Information Services)是微软提供的一套Web服务器解决方案,它支持多种协议和服务,包括HTTP、FTP、SMTP等,并且能够运行...

    虚拟主机销售网站模板

    1. **首页**:作为网站的第一印象,首页应设计得简洁明了,突出虚拟主机的核心优势,如高速、稳定、安全等特性。通常会包含滑动图片、服务亮点、客户评价、价格表等模块。 2. **产品展示**:详细列出不同类型的虚拟...

    清竹虚拟主机管理系统 v5.94

    清竹虚拟主机管理系统是一款庞大的IDC行业软件,它集合了客户管理、在线交易、开通、控制、计划任务于一体的解决方案。一、会员模块自助注册、邮件认证激活帐号,保证帐号资料的真实及安全性会员可在线自助充值,...

    使用Webmin搭建Linux下的虚拟主机.pdf

    "使用Webmin搭建Linux下的虚拟主机" 本文主要讨论如何使用Webmin搭建Linux下的虚拟主机,介绍了...使用Webmin搭建虚拟主机可以提高服务器的利用率,降低硬件投入成本,减少设备维护数量,是一种非常实用的解决方案。

    N点虚拟主机安装和配置

    N点虚拟主机,是一种基于多用户共享资源的网络服务器解决方案,旨在为用户提供稳定、高效且成本低廉的网站托管服务。它通过虚拟化技术,在单一物理服务器上创建多个独立的虚拟主机环境,每个环境拥有独立的IP地址、...

    谈国内运营商常用的虚拟主机管理软件-虚拟主机资讯_虚拟主机动态归纳.pdf

    【虚拟主机管理软件】在IT行业中,虚拟主机管理软件扮演着至关重要的角色,它使得互联网服务提供商...随着技术的不断发展,我们可以期待更多创新的虚拟主机管理解决方案出现,以满足日益复杂和个性化的互联网服务需求。

    键盘网络虚拟主机 v3.0 正式版

    综上所述,键盘网络虚拟主机 v3.0 正式版是一款全面且功能强大的网络托管解决方案,它提供了从基础的文件上传下载,到复杂的域名管理、源代码托管等一系列服务。用户在享受其便利的同时,也需要注意安全设置,确保...

    GODADDY虚拟主机My SQL数据库创建使用教程.doc

    通常购买虚拟主机服务时,GODADDY会提供多种套餐供用户选择,用户可以根据自己的实际需求挑选合适的方案。 ### GODADDY虚拟主机安装和管理 虚拟主机购买成功后,接下来的步骤是进行安装。GODADDY虚拟主机的安装...

    dede虚拟主机销售网站源码

    综合以上信息,我们可以了解到这个源码包是一个完整的IDC虚拟主机销售网站解决方案,适用于那些希望快速搭建此类网站的个人或企业,同时也为开发者提供了学习DEDECMS及网站运营实践的实例。在实际使用中,应结合文档...

    (网网)域名虚拟主机管理系统 免费

    总的来说,"(网网)域名虚拟主机管理系统 v1.0"是一个全面的互联网基础设施管理解决方案,它集成了域名管理和虚拟主机服务的关键功能,为用户提供了高效、易用的服务。无论是对于新手还是经验丰富的管理员,都能从中...

    虚拟主机管理系统源代码--002

    总的来说,这个“虚拟主机管理系统源代码--002”是一个完整的解决方案,包括了构建和维护一个虚拟主机环境所需的所有组件。对于想要学习服务器管理、提升运维技能或创建自定义托管平台的人来说,这是一个宝贵的学习...

    砺青网络虚拟主机管理系统 v2.0 演示版

    在虚拟主机管理方面,砺青系统提供了全面的解决方案。用户可以通过该系统快速创建和分配虚拟主机,支持多种操作系统如Linux和Windows,满足不同用户的需求。系统内置了自动化配置功能,能够快速设定各种环境参数,如...

    虚拟主机解压php源码

    在IT行业中,虚拟主机是一种广泛使用的网络服务,它允许用户在互联网上托管他们的网站而无需拥有和维护自己的服务器。虚拟主机通常提供一个控制面板,让用户能够管理文件、数据库和电子邮件等服务。对于初学者和小型...

Global site tag (gtag.js) - Google Analytics