为我的WCF服务启用SSL

为我的WCF服务启用SSL,wcf,ssl,Wcf,Ssl,我有一个在开发中使用basicHttpbinding的WCF服务 现在,在我们想要使用SSL的产品中,我必须做哪些更改才能仅强制SSL连接?MSDN上的此页解释了WCF绑定安全性 BasicHttpBinding类是 主要用于与进行互操作 现有的Web服务,以及许多 这些服务由互联网托管 信息服务(IIS)。 因此,运输安全 因为这种装订是为 与IIS的无缝互操作 地点。这是通过设置 安全模式传输,然后 正在设置客户端凭据类型。 凭证类型值对应 到IIS目录安全机制。 下面的代码显示了该模式

我有一个在开发中使用basicHttpbinding的WCF服务


现在,在我们想要使用SSL的产品中,我必须做哪些更改才能仅强制SSL连接?

MSDN上的此页解释了WCF绑定安全性

BasicHttpBinding类是 主要用于与进行互操作 现有的Web服务,以及许多 这些服务由互联网托管 信息服务(IIS)。 因此,运输安全 因为这种装订是为 与IIS的无缝互操作 地点。这是通过设置 安全模式传输,然后 正在设置客户端凭据类型。 凭证类型值对应 到IIS目录安全机制。 下面的代码显示了该模式 正在设置和凭据类型已设置 打开窗户。你可以用这个 当客户端和 服务器位于同一Windows域上

C#

或者,在配置中:

<bindings>   
   <basicHttpBinding>
            <binding name="SecurityByTransport">
               <security mode="Transport">
                 <transport clientCredentialType="Windows" />
                </security>
            </binding>   
   </basicHttpBinding> 
</bindings>

要启用ssl,无需登录,请将clientCredentialType设置为“无”

安全模式的选项包括:

无、传输、消息、仅带有MessageCredential和TransportCredential的传输


您可以在以下位置找到更多详细信息:

我认为如果在您的绑定下有
,如果您将其更改为
,您就可以了

这是我正在编写的代码库的副本,我在代码中尝试了这一点,它似乎正在工作
如果有帮助的话,我至少在调用服务时得到WSDL

BasicHttpBinding basicBinding = new BasicHttpBinding();
if (RegistryConnectionStringFactory.UseSslForCommunications)
{
   basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
   basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}
else
{
   basicBinding.Security.Mode = BasicHttpSecurityMode.None;
   basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}

我刚刚遇到了同样的问题,发现了这篇MSDN文章: 在本文的末尾,您将看到WebConfig文件的xml配置


这个解决方案对我很有效。还有一件事要说,记住你需要一个真正的证书才能发布

所以“传输”的安全模式意味着SSL?这里的答案是:希望它有帮助
BasicHttpBinding basicBinding = new BasicHttpBinding();
if (RegistryConnectionStringFactory.UseSslForCommunications)
{
   basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
   basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}
else
{
   basicBinding.Security.Mode = BasicHttpSecurityMode.None;
   basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}