首页 > 解决方案 > AWS 环境中的 WCF UserNameTransport 错误 - 收到不安全或不正确安全的故障

问题描述

我有一个应该通过 SSL 工作的 WCF 应用程序。在我的本地机器上使用自签名证书配置了 SSL,它工作正常。

将应用程序移动到 AWS EC2 实例时出现以下错误。

例外:

从另一方收到不安全或不正确安全的故障。有关代码和详细信息,请参阅内部 FaultException。

异常,检查 tracelog.svclog 后:

安全处理器无法在邮件中找到安全标头。这可能是因为消息是不安全的错误,或者是因为通信双方之间存在绑定不匹配。如果为安全配置了服务并且客户端未使用安全性,则可能会发生这种情况。

用于此应用程序的绑定,

<customBinding>
    <binding name="httpBasic" receiveTimeout="00:10:00" sendTimeout="00:10:00">
        <security authenticationMode="UserNameOverTransport" >
        </security>
        <textMessageEncoding  messageVersion="Soap11"/>  
        <httpsTransport maxReceivedMessageSize="2147483647" 
              keepAliveEnabled="false" transferMode="Streamed"/>
    </binding>
</customBinding>

AWS环境:

EC2 实例是 Windows 10 机器,位于经典负载均衡器后面,负载均衡器是使用 Route 53 配置的 SSL。

EC2 实例不是图形用户界面。它只能访问 DOS 命令提示符。

通过更新配置文件 ( %WinDir%\System32\Inetsrv\Config\applicationHost.config) 在 EC2 实例 IIS 中配置 SSL,如下所示:

<site
   <bindings>
      <binding protocol="https" bindingInformation="*:443:" />
   </bindings>
</site>

到目前为止尝试了以下更改,两端的绑定相同。

includeTimestamp - false
enableUnsecuredResponse- true
maxClockSkew-10:00:00

在绑定安全性中更改这些内容后,我没有看到“不安全或安全错误”错误。但是,用户名没有在服务端接收。

我已经通过记录用户名验证了这一点。

证书未在 EC2 实例 IIS 中配置,因为证书已在负载均衡器中配置。我们是否需要 IIS 证书来处理传入的请求消息?

请提供您的建议,以便在服务端正确接收安全凭证(用户名和密码)。

谢谢

标签: c#amazon-web-serviceswcfsslamazon-ec2

解决方案


将证书安装到 EC2 实例 IIS 后,应用程序能够提取凭证。


推荐阅读