相关疑难解决方法(0)

Web 服务器如何知道使用哪个密钥对进行 SSL 解密?

我的理解是,当 Apache 收到对它正在侦听的 TCP 端口之一(例如 80、443)的请求时,它将通过查看 HTTP 标头来决定正在请求哪个主机Host。然后服务器将知道它应该将请求重定向到哪个虚拟主机。

但是它对基于 SSL/TLS 的 HTTP 是如何工作的呢?由于整个 HTTP 请求都被加密(至少我相信我在某处读到过),因此只有在服务器解密数据后才能读取标头信息。但是为了解密,它需要知道要使用哪个密钥对,因为您可以在 Web 服务器上安装多个 SSL 证书。

那么服务器如何知道解密需要哪个密钥呢?


我的猜测

我可以想象 TLS 握手提供了必要的信息。


关于“可能重复”标志:

虽然我同意链接问题的答案和我自己的答案相似,但我必须说问题是不同的。是否或如何使用独立的 SSL 证书托管多个站点是毫无疑问的。相反,我的问题涉及潜在的技术方面。

ssl https web-server

18
推荐指数
2
解决办法
1654
查看次数

基于主机头的 SSL 证书选择:可能吗?

Web 服务器是否可以根据传入连接的主机标头选择要使用的 SSL 证书,或者该信息是否仅在建立 SSL 连接后可用?

也就是说,我的网络服务器是否可以在端口 443 上列出并在请求https://foo.com 时使用 foo.com 证书,如果请求https://bar.com或我正在尝试使用 bar.com 证书不可能的事情,因为服务器必须在知道客户端想要什么之前建立 SSL 连接?

ssl web-hosting https ssl-certificate

17
推荐指数
2
解决办法
2617
查看次数

SSL 站点未在 Apache 和 Ubuntu 中使用正确的 IP

我正在尝试设置一个 apache-ubuntu-php 网络服务器。我的网络服务器将托管多个 SSL 站点,每个 SSL 站点都有自己的 IP 地址(除非有更好的方法来做到这一点)。

所以我想第一步是让 apache 识别至少两个不同的 IP 地址。现在,我有一个网站的 SSL 和非 SSL 版本,分别是http://mysite.comhttps://mysite.com。尽管两者目前都在我的服务器上运行,但我无法让两者都使用不同的 IP 地址。现在,两者都使用 IP 1.1.1.1。我购买了第二个 IP 地址 2.2.2.2,但https://mysite.com不接受它,firefox 抱怨错误“ssl_error_rx_record_too_long”。这是我的 2 个 vhost 文件

/etc/apache2/site-enabled/000-default

#NameVirtualHost 1.1.1.1:80

#<VirtualHost 1.1.1.1:80>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order …
Run Code Online (Sandbox Code Playgroud)

ubuntu ssl virtualhost apache-2.2

10
推荐指数
1
解决办法
6910
查看次数

curl 在 https 请求上成功,wget 没有

当我运行curl命令行

curl "https://example.com"
Run Code Online (Sandbox Code Playgroud)

它立即成功,返回请求的结果。

当我运行相同的 wget 命令时

wget https://example.com
Run Code Online (Sandbox Code Playgroud)

它最终因“无法建立 SSL 连接”而超时。没有任何具体的错误信息。它可以连接,但无法进行 SSL 握手。我试过了,--no-check-certificate但这没有什么区别 - 它似乎与超时有关。

然而:

wget http://example.com
Run Code Online (Sandbox Code Playgroud)

工作正常(HTTP 与 HTTPS)。

这也影响了PHP 的“ file()方法调用。

我的问题是,什么会导致 curl 成功检索页面(对于我们域中的所有站点)而不是 wget 或 php 解释器?这是周末的新问题,服务器之前很好。

(操作系统为 Red Hat Enterprise Linux 6.4)

ssl wget curl

9
推荐指数
2
解决办法
4万
查看次数

Apache SNI namevhosts 总是路由到第一个 VirtualHost 条目

Apache 似乎将所有 https 请求路由到第一个,<VirtualHost *:443>而不管 ServerName/ServerAlias 字段上的 SNI 匹配如何。

Apache 使用 SNI
服务器版本构建:Apache/2.2.22 (Ubuntu)
服务器构建:2013 年 3 月 8 日 15:53:13
OpenSSL 1.0.1 2012 年 3 月 14 日

error.log 报告:

Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
Run Code Online (Sandbox Code Playgroud)

这表明 SNI 正在按照http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI工作(您如何判断您的 Apache 构建是否支持 SNI?)

SSL_TLS_SNI使用 HTTPS 请求时似乎已正确设置(使用 验证phpinfo()

配置:

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to …
Run Code Online (Sandbox Code Playgroud)

sni namevirtualhost apache-2.2

7
推荐指数
1
解决办法
2万
查看次数

世界准备好接受基于名称的 HTTPS 虚拟主机服务了吗?

可能重复:
同一 IP 地址和同一端口上的多个 SSL 域?

我正在开发一个必须使用 HTTPS 的网络应用程序。不过,它的开发成本有点低,我真的不需要(或不想支付)我自己的专用 IP 地址,除了 TLS 需要它。

除此之外,现代 Web 浏览器支持 TLS 的扩展,允许多个域名在单个 IP 后运行。

(感觉就像我们回到了 90 年代中期,当时许多浏览器都支持 HTTP 1.1 Host 标头,但没有足够的支持。)

世界是否准备好接受依赖此 TLS 扩展的网站,还是我应该为专用 IP 付费?

web-hosting virtualhost tls

6
推荐指数
1
解决办法
474
查看次数

SSL 是否也加密 DNS 地址?

如果我向以下地址发出 HTTP 请求:

https://hello.domain.com

连接也会加密域地址 ( hello.domain.com) 吗?因此,嗅探流量仍然无法猜测请求的 DNS 地址是什么。

注意:我说的是 DNS 地址,而不是解析的 IP 地址。

domain-name-system ssl domain

6
推荐指数
1
解决办法
5860
查看次数

在 IIS6 上使用 SSL 的多个站点

这听起来可能有点愚蠢,但我更像是一个开发人员而不是服务器管理员,而且我在 IIS 方面非常愚蠢。所以请耐心等待。

我目前有一个客户端,它有一个运行 IIS6 的专用 2K3 框。他们在这个盒子上托管一个站点,有两个域解析到该站点(domain1.com、domain2.com)。该站点存储在典型的 C:\Inetpub\www 文件夹中。此外,该站点还有一部分受 SSL 保护。有两个 SSL 证书,每个域一个。

当用户访问 https:// domain1 时。com,一切都很好。但是,当用户转到 https:// domain2 时。com,Internet Explorer 会发出安全警告。显然,这不是我们想要的。(我不得不在 URL 中添加空格,因为 ServerFault 不允许我一次发布多个 URL,因为我是新来的)。

这里有一些关于 IIS 管理器中站点设置的信息。

这里列出了两个站点,“domain1.com”和“Administration”。当我进入 domain1.com 的属性时,IP 地址的值为“(所有未分配)”。

在“高级”下,列出了“domain2.com”,其 IP 地址为“默认”。此外,在“此网站的多个 SSL 身份”中,有一个条目的 IP 地址为“默认”,标准 SSL 端口为 443。

我可以在“目录安全 > 查看证书”下查看 domain1.com 的证书。那里似乎一切正常。

所以,回顾一下:我正在尝试为指向同一个地方的不同域设置单独的 SSL 证书。这可能吗?如果有人可以向我解释这个过程(并尽可能地将其简化)或至少为我指明正确的方向,我们将不胜感激。

如果这没有任何意义,或者我没有为您提供足够(或正确)的信息,请告诉我。

windows-server-2003 ssl iis-6

4
推荐指数
1
解决办法
3369
查看次数

为不支持 SNI 的客户端浏览器解析多 SSL 对一 IP

哇,首字母缩略词 :) 所以根据这个问题,只要您的服务器支持 TLS(Apache 2.2x 支持),您就可以在一个 IP 地址上拥有多个 SSL 子域。

该问题的另一个答案指出客户端浏览器必须具有SNI 支持才能工作,而 IE 在 Windows XP 上没有。因此,使用该浏览器的人会出现一条警告消息,指出 SSL 证书与域不匹配。

可以为那些没有 SNI 支持的客户端浏览器解决这个问题吗?通配符(用于子域)可以解决问题吗?还有其他(更便宜的)选择吗?

linux ssl tls sni apache-2.2

3
推荐指数
1
解决办法
380
查看次数

同一apache服务器上的多个域名

我正在我的本地系统上测试配置以学习 Apache 配置并使用相同的方法来处理我的生产服务器。

我需要配置两个域example.comexample.org

我有 php 脚本所在的目录:

/server/example.com for example.com/server/example.org for example.org

我在两个目录上运行了这个命令:

sudo chcon -R -h -t httpd_sys_content_t /server/example.*

example.com 中的 index.php 包含

<?
$debug = ($_SERVER['HTTP_HOST'] == 'example.com');
if ($debug) echo "in example.com";
?>
Run Code Online (Sandbox Code Playgroud)

example.org 中的 index.php 包含

<?
$debug = ($_SERVER['HTTP_HOST'] == 'example.org');
if ($debug) echo "in example.org";
?>
Run Code Online (Sandbox Code Playgroud)

我还创建了一个名为example.conf下的 apache conf 文件/etc/httpd/conf.d/example.conf

以下是 .conf 文件的内容:

<VirtualHost example.com:81>
    DocumentRoot /server/example.com
    ServerName example.com
    <Directory "/server/example.com">
        AllowOverride None
        Options All …
Run Code Online (Sandbox Code Playgroud)

configuration domain apache-2.2

3
推荐指数
1
解决办法
3741
查看次数