为我的WCF服务启用SSL

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

现在在产品中我们想要使用SSL,我只需要做什么改变来强制SSL连接?

MSDN上的这个页面解释了WCF绑定安全。

http://msdn.microsoft.com/en-us/library/ms729700.aspx

BasicHttpBinding类主要用于与现有Web服务进行互操作,其中许多服务由Internet信息服务(IIS)托pipe。 因此,此绑定的传输安全性旨在与IIS站点进行无缝互操作。 这是通过将安全模式设置为Transport然后设置客户机凭证types来完成的。 证书types值对应于IIS目录安全机制。 以下代码显示了正在设置的模式以及设置为Windows的凭证types。 当客户端和服务器在同一个Windows域上时,您可以使用此configuration。

C#

BasicHttpBinding b = new BasicHttpBinding(); b.Security.Mode = BasicHttpSecurityMode.Transport ; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 

或者,在configuration中:

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

要启用ssl,无需login,请将clientCredentialType设置为“None”。

安全模式的选项是:

无,传输,消息,TransportWithMessageCredential和TransportCredentialOnly

您可以在以下urlfind更多详细信息: http : //msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

我只是面临同样的问题,并发现这个MSDN文章: 如何:使用SSLconfigurationIIS托pipe的WCF服务在本文结尾处,您将findWebConfig文件的xmlconfiguration。

该解决scheme对我来说工作得很好。 还有一件事要说,请记住,你需要一个真正的证书发布!

我认为,如果你在“ <Security mode="Transport">你的”绑定“下,如果你将它改为<security mode="None"> ,你会没事的。

这是我正在处理的代码库的一个副本,我做了这个代码中,它似乎工作。 我得到的WSDL,至less当我打这个服务,如果这有助于所有:)

 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; }