标签: http

如何通过单个端口处理加密和未加密的 http 连接

请看下图。

替代文字

这应该如何工作?

  • 当远程请求 http://myhost.com:8080/* 时,请求应该转发到监听环回接口 8008 端口的 http 服务器。这是简单的部分。

  • 当远程用户请求 http://myhost.com:8080/specialurl ...

    • 充当应用程序级网关的程序应该能够将连接升级为加密会话(无需更改端口

    • 与远程浏览器建立加密会话后,应将请求转发给监听环回接口8000端口的C程序

我的问题是

  1. 您是否曾经在生产环境中部署过这样的解决方案?如果你有...
  2. 您使用什么产品作为应用程序网关?
  3. 你能提供一个配置示例吗?

硬限制

  • 无法控制防火墙,唯一可以让外部流量进入内部服务器的端口是 8080。端口号无关紧要,问题是在防火墙级别只有一个端口打开以转发传入到内部服务器的流量。
  • 内部服务器必须运行 Linux(目前它运行的是 Debian Lenny)
  • 远程用户只需要当前的 Web 浏览器和 Internet 连接即可访问此服务器。这意味着通过 SSH 进行反向端口转发在这里不是一个选项。
  • 我需要一个已经在生产中经过测试并且可以轻松部署的产品。我不打算开发自己的应用程序网关(如果是这样,我想我会在 Stack Overflow 上问这个问题,而不是在 Server Fault 上问这个问题)。

软限制

  • 我想避免将 Apache 作为应用程序网关(尽管如果这是唯一可能的选择,我愿意这样做)
  • 如果可能,应用网关应该是成熟的开源软件产品。

迄今为止尝试过的应用程序网关产品(未成功)

  • nginx
  • 轻量级

相关 RFC

  • RFC2817 ( ...解释了如何使用 HTTP/1.1 中的升级机制通过现有的 TCP 连接启动传输层安全 (TLS)。这允许不安全和安全的 HTTP 流量共享同一个众所周知的端口...)
  • RFC2818 ( ...描述了如何使用 TLS 来保护 Internet 上的 …

linux http nginx https lighttpd

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

有没有办法关闭特定网站的客户端浏览器缓存?

这是一个与浏览器无关的问题,但我们正在使用 IE9 进行测试。

我们的用户访问的 Web 应用程序之一被随机缓存,更改未在应有的时候显示。没有其他网站有这个问题,我们已经与声称它不会发生在其他任何人身上的供应商合作。如果我们使用开发人员工具栏并选择“从服务器强制刷新”,一切都会正确更新。

我们的想法不是真正解决问题,而是通过禁用此特定站点的缓存来解决它。但是,我们不知道如何。

http internet-explorer web-server cache

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

如何在服务器错误之前从 HTTPS 重定向到 HTTP?

我曾经用SSL证书运营过一个网站,但已经停止使用SSL证书。问题是网站的大部分外部链接都使用 https:// 前缀。

我在 .htaccess 文件中尝试了 https:// 到 http:// 重定向:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)

但是,正如其他地方指出的那样,服务器似乎在激活重定向之前尝试检索证书。因此,在完成重定向之前会显示错误。该错误要么是证书已过期的警告,要么是我删除了证书签名请求,然后是 SSL 收到超过最大允许长度的记录的错误。

有什么办法可以让传入的链接正确重定向?

http https web-server .htaccess apache-2.2

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

我的日志中的 HTTP COOK 请求方法是什么?

我在 Apache 日志中看到如下条目

178.216.185.210 - - [24/Feb/2014:11:46:40 -0500] "COOK /freesearch.php?portal=0a9&... HTTP/1.0" 303 589 "-" "Mozilla/4.0 (compatible; Synapse)"
Run Code Online (Sandbox Code Playgroud)

COOK代替通常的GETPOST

我尝试了各种搜索词,但找不到有关这可能是什么的任何信息。我还用谷歌搜索了用户代理字符串,发现它很可能是一个用Ararat Synapse构建的脚本。从使用该用户代理字符串发出的其他请求来看,这是一个不合格的人。

那么这只是一些编造的请求方法吗?

Apache 如何处理未知的请求方法?所有COOK请求的响应状态代码都记录为 303。Apache 是说See Other并且只提供相同的 URI?我没有看到来自同一个 IP 的另一个点击,所以我假设响应被简单地记录或忽略。他们可能稍后会从另一个 IP 回来。

所以我的脚本永远不会运行,对吗?

security http apache-2.2

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

HTTP URL 重定向命令行跟踪

我必须提供可以记录在一张纸上的明确证据,证明一个 URL 重定向到另一个 URL。

当您浏览有问题的 URL 时,Web 服务器会响应 HTTP 重定向,这会更改地址栏中的 URL 并将您发送到不同的 URL

我正在处理一个涉及网络流量的法律案件,因此必须在一张纸上证明证据(没有视频证据)。

是否有我可以执行的跟踪,在 Windows 命令行上显示 HTTP 请求和响应?

http url command-line-interface redirect

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

如何使用 keep-alive + HTTP Pipe-lining 修复 iOS 8 中的图像交换问题?

自 iOS8 以来,我管理的站点遇到了间歇性问题,其中图像与其他图像交换位置。很多地方都提到了这一点,但没有明显的解决方案:

https://discussions.apple.com/thread/6574663

http://tech.vg.no/2011/12/14/safari-on-ios-5-randomly-switches-images/

http://tech.vg.no/2012/02/01/safari-on-ios-5-randomly-switches-images-part-3/

这在过去的 iOS5 中似乎是一个问题。我们的服务器正在运行 Lightspeed,并带有管道和保持活动状态。我的服务器管理员已经确认流水线正在按照请求的顺序返回资产。他提到禁用 keep-alive 可能会解决问题,但会大量增加服务器负载,这将是一件非常糟糕的事情。

我所有的资产也都正确地传递了内容长度。

我现在真的处于一个死胡同,无法解决这个问题。有这么多用户使用 iOS,每个人都开始感到非常沮丧。

它只是随着 iOS8 的引入而开始发生,它对 Safari 进行了一些相当大的更改。在 8 个版本中的每个版本中,问题仍然存在。正如我所说,它是间歇性的,我们的用户开始指责我们“没有其他网站有问题”。

我想知道是否有人可以对此有所了解?有没有其他人遇到过这个问题和/或找到了解决方案?

是我有问题的网站的链接。

http web-server ios litespeed

9
推荐指数
1
解决办法
3478
查看次数

通过端口 8080/8443 提供 HTTP/HTTPS 服务是否安全

由于基础设施的限制,为全世界提供 HTTP 服务的提议解决方案之一是通过端口 8080 和 8443 提供它。

我担心的是,某些用户可能无法访问这些服务,因为它们没有在标准端口上运行,并且内容可能会被(例如)作为公司网络策略的一部分进行过滤。

那么......互联网用户无法访问这些服务的可能性有多大?

http https web-server port

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

Asterisk 的 phoneprov 模块可以安全使用吗?

我正在使用 Ubuntu Server 16.04 打包的 Asterisk 13.1.0 来运行纯 VoIP 电话系统。Asterisk 有一个模块——phoneprov允许它模板化特定行的配置文件并从其内置的 HTTP 服务器提供它们。我想用它来配置我的 Polycom IP 电话,但我不知道如何安全地这样做。更复杂的是,我已经在使用内置的 HTTP 服务器进行 SIP over WebSockets。

据我所知,该phoneprov模块根本没有身份验证或授权机制。它似乎只是向任何询问的人提供任何文件。由于生成的配置文件包含注册为一行所需的所有凭据,因此可以向内置 HTTP 服务器发出 HTTP 请求的任何人都可以注册为通过phoneprov. 这似乎是一个太明显的安全问题,不可能存在于像 Asterisk 这样备受瞩目的软件中,而在文档中甚至(据我所知)在整个 Internet 上都没有看到它。我在这里错过了什么吗?

TLS 相互认证

至少在我看来,验证用于配置的硬件 IP 电话的理想方法是通过 TLS 客户端证书。几乎所有主要制造商的手机都带有由私有 CA 签署的客户端证书,该证书通过 MAC 地址识别手机。由于配置文件也由 MAC 地址提供服务,因此将证书中的 MAC 与 URL 中的 MAC 进行匹配并以这种方式控制访问非常简单。

这就是我的基于 nginx 的配置服务器(它处理除线路凭据之外的所有配置)所做的。然而,Asterisk 永远不支持 TLS 客户端身份验证。它有一个 TCP 和 TLS 套接字侦听器的常见实现,我通过阅读源代码确认它不支持请求客户端证书。

更正:Asterisk 的tcpctls系统确实支持客户端证书验证,但它只能验证客户端证书是否有效以及(可选)是否commonName与客户端的主机名匹配。虽然可以为 Asterisk HTTP 服务器启用该选项,但它对保护没有多大帮助,phoneprov因为该模块不使用主机名(或其他任何内容)进行授权。它也会通过 …

security ssl http asterisk voip

9
推荐指数
0
解决办法
450
查看次数

Windows Server 2012 R2 IIS 10 / HTTP/2

我们目前正在使用 IIS 8.5 为我们的 Web 服务器运行 Windows Server 2012 R2。是否可以将其升级到 IIS 10 for HTTP/2 或在我们当前的安装中以其他方式启用 HTTP/2?

谢谢,马特。

iis http windows-server-2012-r2 iis-8.5 http2

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

如何避免用户下载大文件?

我正在为 NGINX 提供一个静态文件夹。

在那个文件夹中,我有一个 60GB 的特定文件,但它只能以小块读取,使用如下所示的 HTTP 请求:

在此处输入图片说明

所以如果用户试图下载整个文件,NGINX 应该拒绝它。

在某些方面,我认为可以这样做,例如:

  1. 检查HTTP请求头是否Range存在,字节范围是否小于X。

  2. 检查请求的响应负载是否小于例如 100MB。

但我不知道如何在 NGINX 中实现这些。

http nginx

9
推荐指数
1
解决办法
401
查看次数