2017-04-16 70 views
0

我不完全确定这是否是我的问题的正确措辞,但在我们的环境中,标准是使用接受HTTPS流量的AWS ELB并执行ELB级别的SSL终止。从那里,ELB和Web服务器之间的所有流量都使用常规HTTP完成。这种配置似乎对我们在apace或nginx上运行的Web服务器运行良好,但我需要为我们的一台IIS服务器使用相同的格式,并且它似乎给我带来一些问题。ELB上的HTTPS到HTTP IIS后端服务器报告不安全消息

我可以击中ELB并访问网站,但它在URL栏中给我一个“不安全”的消息。上的安装的一些背景信息是如下:

  • ELB与HTTPS一个监听器(443),以实例协议创建/端口HTTP安装在ELB
  • 相同的SSL证书(80)
  • 通配符SSL证书安装了IIS服务器上
  • HTTP(80)的IIS网站上绑定集(证书设置为通配符证书的CN的友好名称)

我发现关于URL重写模块HTTP重定向多个职位到HTTPS t我不确定这是我想做的事情。我们的ELB和IIS服务器位于安全的VPC中,所以对HTTP(IIS网络服务器)的HTTPS(在ELB上)很好。我想如果我使用的URL重写方法与卸载SSL到Web服务器相同?

回答

0

实施URL Rewrite Module 2.0规则以基于URL模式重定向并不意味着将SSL卸载到IIS,并且您不需要在已将您的证书上载到ELB的IIS上安装SSL证书。

上安装IIS URL重写后,通常你会写在你的Web.config重写规则如下:

<system.webServer> 
    <rewrite> 
    <rules> 
     <rule name="Redirect to HTTPS" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
      <add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> 
     </rule> 
    </rules> 
    <outboundRules> 
     <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> 
     <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> 
     <conditions> 
      <add input="{HTTPS}" pattern="on" ignoreCase="true" /> 
     </conditions> 
     <action type="Rewrite" value="max-age=31536000" /> 
     </rule> 
    </outboundRules> 
    </rewrite> 
</system.webServer> 

您可能会发现关于如何解决证书错误here其他有用的信息。

0

当您访问HTTPS网站时,如果需要加载的某些其他资源(如图像,CSS文件,JS文件等)来自HTTP位置,则您的浏览器将会/可能会抱怨连接不安全。

使用Web浏览器的开发工具,看看是否有任何连接正在进行(返回到您的服务器或另一台服务器),而不是HTTPS。

0

看起来我的问题实际上是证书和我使用的DNS名称的问题。我们使用通配符SSL证书(即* .example.com),我的ELB的CNAME记录被设置为类似test01.stage.example.com。

一旦我将CNAME记录更改为test01.example.com并从IIS服务器中删除了ssl证书,一切正常。我对通配符证书有点误解。我只是假设* .example.com会抓住任何东西,即使它是第三或第四级域名。