标签: https

如何使用负载均衡器在 IIS 中使用 WCF 服务 HTTPS 绑定和端点配置?

我们有一个 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)

iis-7 https load-balancing wcf

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

Chrome 在 https 站点上运行缓慢,尤其是内部站点

我们正在尝试在我们的公司网络中部署 Google Chrome,但我们发现与 IE 相比,加载 https 页面(尤其是我们自己的内部页面)需要 2-4 倍的时间。有没有人经历过这个并找到了解决办法?

更新

根据 Handyman5 的建议,我在 Chrome 中运行了一些诊断程序,发现最多的时间(每个页面超过 90%)用于从缓存中提取静态文件并呈现页面。但是,如果我在我们的网站上关闭 SSL,这几乎是即时的。

关于为什么会这样的任何想法?

https google-chrome

8
推荐指数
3
解决办法
2万
查看次数

透明 SSL 代理的神话和事实

我已经搜索了很多小时关于为 SSL(不是 Squid)设置透明代理的方法。一般的答案是我不能,但我知道有一些方法。我的目的只有以下几点:

  1. 黑名单/白名单域名(不是 IP 号码)。内容根本不会被过滤或修改。
  2. 强制用户通过这些列表。如果我在 Web 浏览器中修改此类设置,他们可以撤消它。

以下页面告诉我可以不加修改地传递流量,但它没有说明如何: 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 https iptables transparent-proxy

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

nginx HTTPS WWW 重定向到非 WWW

我的 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)

ssl nginx https

8
推荐指数
2
解决办法
9925
查看次数

嵌入式设备的 Https,本地地址

我正在尝试将 https 添加到我正在使用的嵌入式设备。这些设备通常分配有本地 ip 地址,因此无法获得自己的 ssl 证书。

所以基本上我的问题是如何获得没有全球 IP 地址的设备的证书?

假设:

除非经过受信任的 CA 验证,否则浏览器不会信任证书。

但是,您只能获得全球唯一域的经过验证的证书。

那些该死的客户坚持使用本地 IP 地址。

类似的问题在这里


假设A:

  1. 获得公司主要网站的证书
  2. 复制那个证书。+所有设备的私钥
  3. 用户连接到设备
  4. 设备发送证书。给用户
  5. 用户看到证书。受信任(忽略它不适用于此服务器??)
  6. 用户使用证书中的公钥加密 http
  7. 设备使用私钥

结果:

  1. 浏览器抱怨名称不匹配
  2. 客户可以访问彼此的私钥
  3. 不是很安全

假设 B:

  1. 获得公司主要网站的证书 FOR EACH DEVICE
  2. 复制证书。+ 每个设备的私钥
  3. 用户连接到设备
  4. 设备发送证书。给用户
  5. 用户看到证书。受信任(忽略它不适用于此服务器??)
  6. 用户使用证书中的公钥加密 http
  7. 设备使用私钥

结果:

  1. 浏览器抱怨名称不匹配
  2. 安全的

假设 C:

  1. 为每台设备创建自签名证书
  2. 复制证书。+ 设备私钥
  3. 用户连接到设备
  4. 设备发送证书。给用户
  5. Firefox 有一个金丝雀
  6. 用户使用证书中的公钥加密 http
  7. 设备使用私钥

结果:

  1. 浏览器抱怨自签名证书
  2. 自签名证书可能是中间人攻击

ssl certificate https embedded cryptography

8
推荐指数
1
解决办法
3004
查看次数

我可以为 1 个子域打开 HSTS

我只想对 1 个子域而不是整个域强制执行 HSTS,这可能吗?

xxx.yyy.com -> HSTS on
zzz.yyy.com -> HSTS off
    yyy.com -> HSTS off
Run Code Online (Sandbox Code Playgroud)

ssl http https

8
推荐指数
1
解决办法
6656
查看次数

IIS 不再信任任何 CA 进行客户端身份验证

昨天,我们构建服务器(运行 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)

windows iis https ssl-certificate certificate-authority

8
推荐指数
1
解决办法
3540
查看次数

模拟在中国防火墙后面的最佳方式是什么?

我们的 iOS 应用程序存在问题,该应用程序使用应用程序内购买来解锁可下载的内容 - 但似乎仅来自中国。出于这个原因,我们看到来自中国的许多负面评论。

我们的应用内购买过程涉及访问托管在 DigitalOcean 上的 https 服务器,该服务器验证收据并发回 Amazon CloudFront URL 以供下载。

我已经通过 greatfire.org 检查了我们的服务器,它恢复为绿色。CloudFront 或直接 S3 链接似乎也没有被阻止。

我已经在 PureVPN 上设置了一个帐户并使用了他们的一台中国服务器(通过它们发送所有流量),但是我不确定这些服务器是否真的在中国,因为下载过程有效,我可以访问 Gmail/Facebook/NYTimes .

我可以模拟在中国防火墙后面的最佳方式是什么?

ssl firewall https china amazon-cloudfront

8
推荐指数
0
解决办法
826
查看次数

https 拖延 TIME_WAIT 连接

我从我的客户端 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)

https connection time-wait

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

如何在 Amazon AWS 上的 VPC 内的公有子网中的 EC2 上启用传出 HTTP/HTTPS 请求

我使用 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)

http https subnet amazon-web-services amazon-vpc

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