如果连接是通过 HTTPS 建立的,那么 URL 中包含的数据是否可以被视为安全?例如,如果用户单击电子邮件中指向https://mysite.com?mysecretstring=1234的链接,攻击者是否有可能从 URL 中获取“mysecretstring”?
Web 服务器是否可以根据传入连接的主机标头选择要使用的 SSL 证书,或者该信息是否仅在建立 SSL 连接后可用?
也就是说,我的网络服务器是否可以在端口 443 上列出并在请求https://foo.com 时使用 foo.com 证书,如果请求https://bar.com或我正在尝试使用 bar.com 证书不可能的事情,因为服务器必须在知道客户端想要什么之前建立 SSL 连接?
这是我的缩写 nginx vhost conf:
upstream gunicorn {
server 127.0.0.1:8080 fail_timeout=0;
}
server {
listen 80;
listen 443 ssl;
server_name domain.com ~^.+\.domain\.com$;
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass_header Server;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 120;
proxy_pass http://gunicorn;
}
}
Run Code Online (Sandbox Code Playgroud)
同一台服务器需要同时提供 HTTP 和 HTTPS 服务,但是,当上游发出重定向(例如,在处理表单之后)时,所有 HTTPS 请求都将重定向到 HTTP。我发现唯一可以解决此问题的方法是更改proxy_redirect为以下内容:
proxy_redirect http:// https://;
Run Code Online (Sandbox Code Playgroud)
这对于来自 HTTPS 的请求非常有效,但如果通过 HTTP 发出重定向,它也会将其重定向到 HTTPS,这是一个问题。
无奈之下,我尝试了:
if ($scheme …Run Code Online (Sandbox Code Playgroud) 理论上,浏览器不会将引用信息从 HTTPS 传递到 HTTP 站点。根据我的经验,这一直是正确的。但我刚刚发现了一个例外,我想了解它为什么有效,以便我也可以使用它。
在https://www.google.ca/上搜索“我的推荐人是什么”,
例如:https : //www.google.ca/search? q = what+is+my+referer
有几个站点会显示引用。他们似乎都在不应该“工作”的时候“工作”。例如,单击 www.whatismyreferer.com 之一。我得到:
Your referer:
https://www.google.ca/
Run Code Online (Sandbox Code Playgroud)
请注意,有时,我很少会得到“没有推荐人”的结果。返回并再次单击该链接,下次它就会“工作”。
这不应该发生。www.whatismyreferer.com 是一个非 HTTPS 站点。不应传递引用标头,但确实传递了。
这里发生了什么,我如何从我的 HTTPS 站点到我链接到的 HTTP 站点执行相同的操作?
我有一个 EC2 实例,Apache 作为网络服务器(和 Wildfly 作为应用服务器,虽然我不确定它与这个问题有什么关系)。在 EC2 前面,我有一个负载均衡器,它终止 HTTPS 并应用 SSL 证书。
HTTP 和 HTTPS 在 Chrome 中都可以正常工作,但不幸的是在 Safari 中不行。访问http://test.papereed.com工作正常,但访问https://test.papereed.com会出现错误
"Safari can't open the page. The error is "The operation couldn't be completed. Protocol error" (NSPOSIXErrorDomain:100)"
Run Code Online (Sandbox Code Playgroud)
我查看了 /etc/httpd/logs/error_log 和 /etc/httpd/logs/access_log 以及 Safari 控制台,但没有找到解决问题的任何提示。这就是我的知识有多远:-( 任何有关如何追踪此问题的提示将不胜感激。
我已将 Web 服务器设置为使用 SSL(在将其移至公共服务器之前,我将 WAMP 用于我的暂存方案)。手头站点的目的已经成功,我能够使用 HTTPS 协议从远程计算机使用该站点。
我的一个用户(测试人员)提出的一个问题是关于 POST 数据。在他的测试场景中,他在我们的一位潜在客户的现场,访问位于他们非常挑剔的公司防火墙后面的站点(我们已经确定了该站点如何应用于他们的 AUP,我们很干净)。他在 FireFox 中运行站点,使用 Firebug 来监视 POST 和 GET 数据。问题在这里:
在他的 Firebug 窗口中,来自 XMLHTTPRequest 的 POST 和 Response 以纯文本形式返回。是因为他是发起安全连接的人吗?POST/Response 数据会显示给网络管理员或日志吗?
请注意,此处的目的不是欺骗管理员或规避政策;这是一款适用于需要传输敏感数据的不同地点的现场人员的应用程序。使用将与我们遇到的每个网络基础设施协调。
我们在我们的环境中使用 Squid 代理服务器,我们想要缓存 HTTPS 请求。
有没有办法配置 Squid 或一般的代理服务器来缓存 HTTPS 请求?
我有一个装有 2 个网卡的 linux 机器,用于检查通过端口 80 的流量。一张网卡用于上网,另一张卡连接到网络交换机。关键是为了调试目的,能够检查连接到该交换机的设备上的所有 HTTP 和 HTTPS 流量。
我已经为 iptables 编写了以下规则:
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
在 192.168.2.1:1337,我有一个使用 Charles ( http://www.charlesproxy.com/ ) 进行录制的透明 http 代理。
对于端口 80 一切正常,但是当我为指向端口 1337 的端口 443 (SSL) 添加类似的规则时,我通过 Charles 收到有关无效消息的错误。
我之前与 Charles ( http://www.charlesproxy.com/documentation/proxying/ssl-proxying/ )在同一台计算机上使用过 SSL 代理,但由于某种原因透明地执行它没有成功。我在谷歌上搜索的一些资源说这是不可能的 - 如果有人可以解释原因,我愿意接受它作为答案。
请注意,我可以完全访问所描述的设置,包括连接到子网的所有客户端 …
我正在尝试使用我网站上的 mod_ssl 模块支持 HTTPS 流量。我正在为我的服务器运行 Amazon EC2 实例。我已经安装并配置了基本的 LAMP 包。然而,当我去把在SSL特定的命令在我的Apache配置文件(即SSLEngine,SSLCertificateFile等),它吐出了一个错误,说我有一个语法错误或没有加载模块。
我的下一步是尝试$ sudo yum install mod_ssl。但是,yum 返回并说:“处理冲突...错误:httpd24-tools 与 httpd-tools 冲突”。所以,我认为 mod_ssl 包含在 httpd-tools 包中。然后我跑了,$ sudo yum install httpd24-tools但它回来告诉我我已经安装了那个包。
现在为什么我安装了 httpd-tools 包,但我的系统中没有加载 mod_ssl?httpd-tools 包中不包含 mod_ssl 吗?我创建了一个测试 php 文件<?php echo phpinfo(); ?>只是为了确保。我的怀疑得到了证实——phpinfo 中的 apache2handler 加载模块表下没有列出“mod_ssl”。
因此,我不确定如何使用 Amazon Linux AMI 加载/安装/配置 mod_ssl。任何帮助,将不胜感激。这是我目前的规格:
运行此命令以设置服务器:
$ sudo yum install httpd24 php54 php54-devel php54-mysql php54-common php54-gd php54-xml …Run Code Online (Sandbox Code Playgroud) 我可以通过 Amazon CloudFront 托管一个动态网站,因为它们具有CNAME Wildcard Support。但是,我网站的某些页面使用 HTTPS。Amazon有一些关于如何将您的 SSL 证书与 CloudFront 分配相关联的文档,但定价显示每月花费600 美元,对我来说太多了。
我的问题是...是否可以配置 CloudFront 以便从 CloudFront 提供 HTTP 请求,但 CloudFront 忽略 HTTPS 请求并直接传递到源(在我的情况下,弹性负载均衡器可以免费解密 SSL) ?
https ×10
ssl ×6
amazon-ec2 ×1
amazon-elb ×1
apache-2.2 ×1
encryption ×1
http ×1
http-headers ×1
iptables ×1
mod-ssl ×1
nginx ×1
proxy ×1
safari ×1
security ×1
squid ×1
url ×1
web-hosting ×1