AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 126554
Accepted
nitins
nitins
Asked: 2010-03-27 02:27:26 +0800 CST2010-03-27 02:27:26 +0800 CST 2010-03-27 02:27:26 +0800 CST

在同一 IP 上使用 SSL 的多个域

  • 772

我知道设置 SSL 需要专用 IP。如果我们为共享 IP 的域添加 SSL 会发生什么?(名称虚拟主机)

apache-2.2 ssl certificate https
  • 9 9 个回答
  • 26914 Views

9 个回答

  • Voted
  1. Best Answer
    pehrs
    2010-03-27T03:09:35+08:002010-03-27T03:09:35+08:00

    我认为如何解释虚拟主机和 SSL/TLS 的真正问题是一个好主意。

    当您通过 HTTP 连接到 apache 服务器时,您会发送一组 http 标头。它们看起来像这样:

    GET /index.html HTTP/1.1
     Host: www.nice-puppies.com
    

    如果您有虚拟主机,apache 会查看 hosts 字段,然后为您获取正确的 index.html。问题在于添加 SSL/TLS 时。服务器在您发送 http 请求之前设置加密。因此,在完成身份验证/加密之前,服务器不知道您是要去 www.nice-puppies.com 还是 www.evil-haxxor.com。服务器无法猜测(因为发送错误的证书会给您带来令人讨厌的错误消息)。

    一种解决方案是通配符证书(如上所述),它对 *.nice-puppies.com 有效。这样你就可以对多个域使用相同的证书,但你不能拥有 *.com 证书(好吧,你可以,但这对其他人来说非常糟糕),所以通常你需要为每个域使用单独的 IP HTTPS 域。

    • 29
  2. DM
    2010-03-29T05:46:08+08:002010-03-29T05:46:08+08:00

    这个问题的真正解决方案是“服务器名称指示”:

    http://en.wikipedia.org/wiki/Server_Name_Indication

    它才刚刚开始推广到服务器和 Web 客户端,所以它现在还不是你可以使用的东西,但希望在几年后这不会成为一个大问题。

    • 9
  3. Jeremy Bouse
    2010-03-28T20:25:20+08:002010-03-28T20:25:20+08:00

    问题是 SSL 证书绑定到 IP 地址而不是主机名。当连接进入 HTTPS 请求的 IP 地址时,第一个操作是通过传递服务器证书和/或客户端证书来建立 SSL 通信。在连接握手的这个阶段,Apache 服务器无法知道将要通过的请求是为了什么。Host这对于 HTTP(非 SSL)流量是不同的,因为在建立连接后,如果客户端发送标头或将其交给第一个配置的虚拟主机,Apache 服务器可以确定要使用的虚拟主机配置。

    如果您在同一个域下有多个虚拟主机,您可以在 IP 地址上设置一个通配符证书,并定义多个具有不同服务器名称的虚拟主机;但是,如果这些服务器名称不在同一个域名下,它们会产生客户端服务器错误。这将起作用,因为通配符证书对该域名下的所有主机名都有效。如果域名不同,您将需要另一个 IP 地址,因为为该 IP 地址定义的第一个证书将是为连接客户端提供的证书。

    • 3
  4. user38425
    2010-03-27T02:56:34+08:002010-03-27T02:56:34+08:00

    这可以作为 SAN(主题备用名称)添加到一个 ssl 证书中。在我的经验中,我不得不申请组织 sll 证书。我使用了全球标志。

    • 1
  5. Stefan Lasiewski
    2010-04-06T14:09:24+08:002010-04-06T14:09:24+08:00

    实际上,使用现代软件,您可以使用称为“SNI - 服务器名称指示”的新功能通过单个 IP 地址为多个 HTTPS 站点提供服务。

    http://en.wikipedia.org/wiki/Server_Name_Indication

    http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

    我自己还没有使用过它,但它对于内部和 Intranet 站点来说听起来不错。大多数现代浏览器都支持 SNI。IE6 不支持 SNI,但 IE7 支持。

    (更正:20100426 - Windows XP 根本不支持 SNI。Windows Vista 及更高版本支持 SNI。请参阅http://msdn.microsoft.com/en-us/library/dd208005%上的“第 2.2.3 节” 28v=PROT.13%29.aspx#id8)。

    • 1
  6. Sean
    2010-12-24T02:05:10+08:002010-12-24T02:05:10+08:00

    我正在处理同样的问题。作为我的测试,IE7 和更高版本(仅在 Win7 和 Vista 中)/Chrome/Firefox/Safari/Opera 支持“服务器名称指示”。事实上,如果浏览器使用 Tsl 1.0,它支持“服务器名称指示”。

    • 1
  7. Andrejs Cainikovs
    2010-03-27T02:51:31+08:002010-03-27T02:51:31+08:00

    如果您尝试在同一个 IP 上添加两个证书,则只会在任何地方使用先读证书。一个 IP - 一个 SSL 证书。

    如果您想在同一个 IP 上获得更多 SSL 证书,请考虑获得多域(所谓的 UCC - 检查它@godaddy)或通配符(更昂贵)证书。

    • 0
  8. Iraklis
    2010-03-27T02:53:57+08:002010-03-27T02:53:57+08:00

    我认为 OP 正在询问如果他将 SSL 证书添加到具有许多虚拟主机的 IP 会发生什么。如果其他虚拟主机都没有使用 SSL 证书,那么他应该是清楚的。

    • 0
  9. Robert
    2010-03-27T03:06:47+08:002010-03-27T03:06:47+08:00

    UC 证书绝对是要走的路:http ://www.sslshopper.com/unified-communications-uc-ssl-certificates.html

    • 0

相关问题

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • 您最喜欢的 SSL 证书提供商是什么?[关闭]

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve