我们有一个 WCF 服务托管在一组 12 台机器上。有一个负载平衡器是这些机器的网关。
现在站点设置为 SSL;就像用户通过使用带有 https 的 URL 访问它一样。我知道这么多,该站点的 URL 是 https,但没有任何服务器具有 https 绑定或设置为需要 SSL。这让我相信负载平衡器处理 https 并且从平衡器到服务器的连接是未加密的(这发生在防火墙后面,所以没什么大不了的)。
我们遇到的问题是,当 Silverlight 客户端尝试访问 WCF 服务时,它会收到“未找到”错误。我已经与我们的开发人员机器一起建立了一个测试站点,并确保 web.config 中的绑定和端点与客户端一起工作。在生产环境中,我们收到此错误似乎就是这种情况。
下面的 web.config 有什么问题吗?我们应该设置如何以不同的方式处理 https 吗?
我们目前对此不知所措,因为我已经尝试了所有带有端点和绑定的程序化解决方案。我发现的所有解决方案都没有以我们处理的方式处理负载平衡器。
Web.config 服务模型信息:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="TradePMR.OMS.Framework.Services.CRM.CRMServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="TradePMR.OMS.Framework.Services.AccountAggregation.AccountAggregationBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="SecureCRMCustomBinding">
<binaryMessageEncoding />
<httpsTransport />
</binding>
<binding name="SecureAACustomBinding">
<binaryMessageEncoding />
<httpsTransport />
</binding>
</customBinding>
<mexHttpsBinding>
<binding name="SecureMex" />
</mexHttpsBinding>
</bindings> …Run Code Online (Sandbox Code Playgroud) 我们正在尝试在我们的公司网络中部署 Google Chrome,但我们发现与 IE 相比,加载 https 页面(尤其是我们自己的内部页面)需要 2-4 倍的时间。有没有人经历过这个并找到了解决办法?
更新
根据 Handyman5 的建议,我在 Chrome 中运行了一些诊断程序,发现最多的时间(每个页面超过 90%)用于从缓存中提取静态文件并呈现页面。但是,如果我在我们的网站上关闭 SSL,这几乎是即时的。
关于为什么会这样的任何想法?
我已经搜索了很多小时关于为 SSL(不是 Squid)设置透明代理的方法。一般的答案是我不能,但我知道有一些方法。我的目的只有以下几点:
以下页面告诉我可以不加修改地传递流量,但它没有说明如何: iptables https 透明代理与 privoxy?
以下页面显示了 443 的 iptables 规则,我自己无法使用它:http : //alien.slackbook.org/dokuwiki/doku.php?id=slackware : proxy
以下页面介绍了如何使其仅适用于 Squid:http : //www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https
编辑:这里有人说: 如何使用 IPTABLES 在 Squid 周围创建 HTTPS (443) 直通? “对您来说,最好的办法是阻止对端口 443 的直接访问,并告诉您的用户,如果他们想使用 HTTPS,他们必须将浏览器配置为使用代理。” 但我只知道如何完全阻止 443,而不是让它在代理下工作。
我的 SSL 证书用于 mydomain.com,所以我试图将所有 www.mydomain.com 重定向到不带 www 的。现在,所有这些工作:
http://www.mydomain.com
http://mydomain.com
https://mydomain.com
Run Code Online (Sandbox Code Playgroud)
但是https://www.mydomain.com向浏览器发出“站点不安全”警告......我尝试设置如下重定向,但请告诉我我的脚本在哪里有问题......
server {
listen 80;
server_name www.mydomain.com mydomain.com;
rewrite ^(.*) https://mydomain.com$1 permanent;
client_max_body_size 100M;
location / {
index index.htm index.html index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/mysite$fastcgi_script_name;
}
}
server {
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/public.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
server_name www.mydomain.com;
rewrite ^(.*) https://mydomain.com$1 permanent;
}
server {
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/public.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
client_max_body_size 100M;
server_name …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 https 添加到我正在使用的嵌入式设备。这些设备通常分配有本地 ip 地址,因此无法获得自己的 ssl 证书。
所以基本上我的问题是如何获得没有全球 IP 地址的设备的证书?
假设:
除非经过受信任的 CA 验证,否则浏览器不会信任证书。
但是,您只能获得全球唯一域的经过验证的证书。
那些该死的客户坚持使用本地 IP 地址。
类似的问题在这里
假设A:
结果:
假设 B:
结果:
假设 C:
结果:
我只想对 1 个子域而不是整个域强制执行 HSTS,这可能吗?
xxx.yyy.com -> HSTS on
zzz.yyy.com -> HSTS off
yyy.com -> HSTS off
Run Code Online (Sandbox Code Playgroud) 昨天,我们构建服务器(运行 Windows Server 2012)上的 IIS 开始拒绝我们客户的证书。证书使用我们自己的自签名 CA 证书进行签名,该证书已添加到受信任的根证书颁发机构(本地计算机)。直到昨天,这一直完美无缺。我一直在拼命地试图找出可能导致这种情况发生的变化。我在事件查看器中没有看到 Schannel 错误或警告。
但是,在对服务器运行 openssl 后,我发现了一些可疑的东西。看起来 IIS 没有在其受信任的客户端证书颁发机构列表中发送单个 CA。日志如下所示:
CONNECTED(00000144)
depth=0 CN = Localhost
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = Localhost
verify return:1
---
Certificate chain
0 s:/CN=Localhost
i:/CN=Localhost
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIC+zCCAeOgAwIBAgIQOkacw1RkE4tI9+HnyEXFvzANBgkqhkiG9w0BAQsFADAU
MRIwEAYDVQQDEwlMb2NhbGhvc3QwHhcNMTMwODA1MDgwOTU1WhcNMzkxMjMxMjM1
OTU5WjAUMRIwEAYDVQQDEwlMb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQC/kc5BLMcmuNoZe8jkrJQt/kZFD7EnVOtvEEJt0dZJG008TqXD
MdXnybBWPCbvQIFoxREY6wjPExcU39SzbCWLGV99Z+eR0zFkOpK3SSppe9fulkP7
ktiDWTSkgJUx1/EpHeJHL1hy7YKRFYOtPlewZYjaklh/wND5F88mOri/lEoENpWO
0fLrJS+Nnizeti7LEzstNtU7+AH4h6njCujrQwjwdCr1QTggjLj3iOy7fpUqYwKe
mNGNIAR8XI06JzYAFDpcdo4PMZScNfd0cqcMIHJuWUoaciW9qwrbHWyr1B3hBCX0
luQSF4uHVbT+8yOI4fOWL4PTL/6ZNEfl4WrxAgMBAAGjSTBHMEUGA1UdAQQ+MDyA
EHhoR/6NVn2yfadGy1PvZ26hFjAUMRIwEAYDVQQDEwlMb2NhbGhvc3SCEDpGnMNU
ZBOLSPfh58hFxb8wDQYJKoZIhvcNAQELBQADggEBAIujtVAr3UvG7dB55SBgQP5p
AiOum0DM9xULarl+Wz/GdTvdK65PcUB34DlG8pEhz5nRsX5I/nZvLF/7U5OCICp2
Gnvbm2jLYnlacB16+ds/4cgG65a/CddSdVyRIYa2YdGXZGiJ6zTkEQWEH4tXmkO+
InzHsBEVO1MT1nAfkZp6MzgEbCv8Xus3QIxdnJZZYHMzXcD+48oQEfP5BhHXW/iN
MlNsuN8wwwpS61r2g9Bu8AhMcbnvoMNdYbBtPC5+ltlOQK0RNNTcqOr4kJj/BwO3
fGS8/lh9FTZFq8c4ES94hoEu4szUfA4jkTvt9SWossOBPehhIWKUgx5MIdC6Hgc=
-----END CERTIFICATE-----
subject=/CN=Localhost
issuer=/CN=Localhost
---
No client certificate CA names sent
---
SSL handshake has read 1291 bytes and written …Run Code Online (Sandbox Code Playgroud) 我们的 iOS 应用程序存在问题,该应用程序使用应用程序内购买来解锁可下载的内容 - 但似乎仅来自中国。出于这个原因,我们看到来自中国的许多负面评论。
我们的应用内购买过程涉及访问托管在 DigitalOcean 上的 https 服务器,该服务器验证收据并发回 Amazon CloudFront URL 以供下载。
我已经通过 greatfire.org 检查了我们的服务器,它恢复为绿色。CloudFront 或直接 S3 链接似乎也没有被阻止。
我已经在 PureVPN 上设置了一个帐户并使用了他们的一台中国服务器(通过它们发送所有流量),但是我不确定这些服务器是否真的在中国,因为下载过程有效,我可以访问 Gmail/Facebook/NYTimes .
我可以模拟在中国防火墙后面的最佳方式是什么?
我从我的客户端 PC 连接到网络服务器,它仅使用 HTTPS。
当我连接时,我在 TCPView(替代 netstat 的 sysinternals 工具)中看到了很多到 https 端点的 TIME_WAIT 连接。很多时候我看到 11 个连接在 TIME_WAIT 中停留了 2 分钟。这就是每次我提出请求时。2-4 个连接在 ESTABLISHED 中保持打开状态无论我设置服务器的时间有多长Keep-Alive: timeout=xx
后面的连接是可以的,它们被适当地重用。之前的连接建立并需要整整 2 分钟。
我使用 WireShark 捕获了流量,并在延迟连接的源端口上看到了正常的 FIN、ACK 等传递。我经常看到 Chrome 和 IE(它们都使用 Windows HTTP 堆栈)在任何带有真实数据的请求出现之前发出 6 个 TCP 请求。有效载荷很小(大约 2000 字节)。
Firefox 根本不发出这些请求......
还值得一提的是,该证书是自签名的,并且不会在浏览器中进行验证(Firefox 的处理方式与 chrome 完全不同)。
为什么我的浏览器会发出这些请求?为什么 Firefox 不发出这些 tcp 连接?
编辑,这是 Chrome 建立的第一个连接的转储(使用wireshark 捕获):
"https","0.000000",local-ip,dest-ip,"443","TCP","53890 > https [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=8 SACK_PERM=1"
"53890","0.012749",dest-ip,local-ip,"53890","TCP","https > 53890 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1400 …Run Code Online (Sandbox Code Playgroud) 我使用 AWS Docs 中的场景 2 设置了一个 VPC:http : //docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html
我已将弹性 IP 分配给在公共子网中运行的 EC2 实例。SSH 工作正常,我可以访问在其上运行的网站。但是,我不能发出传出的 HTTP 或 HTTPS 请求(我在尝试运行时注意到了这一点yum update)。
我相信我所有的安全设置都是正确的。我无法通过 Internet 网关发出传出 HTTP/HTTPS 请求吗?我特别要求在创建时不要将公共 IP 分配给此实例,因为我知道我将分配一个让网站 DNS 喜欢的弹性 IP。我在私有子网中为实例设置了 NAT,但我目前只有 RDS 实例在那里运行,所以我没有测试从那里发出的请求。
该 EC2 实例的安全组具有以下出站规则:

该子网的路由表具有以下设置:

网络 ACL 具有以下设置:

默认 DHCP 选项集具有以下设置:
domain-name = ec2.internal
domain-name-servers = AmazonProvidedDNS
Run Code Online (Sandbox Code Playgroud)
默认/etc/resolv.conf设置为:
search ec2.internal
nameserver 10.0.0.2
Run Code Online (Sandbox Code Playgroud)
VPC 和子网的 CIDR 块如下:
VPC: 10.0.0.0/16
Public Subnet: 10.0.0.0/24
Private DB Subnet in US East 1A: 10.0.1.0/24
Private DB Subnet in …Run Code Online (Sandbox Code Playgroud) https ×10
ssl ×5
http ×2
amazon-vpc ×1
certificate ×1
china ×1
connection ×1
cryptography ×1
embedded ×1
firewall ×1
iis ×1
iis-7 ×1
iptables ×1
nginx ×1
subnet ×1
time-wait ×1
wcf ×1
windows ×1