对于WCF服务,没有证书的TransportWithMessageCredential是否足够安全?
我开发了一个WCF自托管服务,我有两个基本的安全要求,因为它将通过Internet访问:
-
传输层应防止篡改和嗅探,尤其是检索身份validation凭据。 这就是SSL所做的,但是从我所看到的设置SSL需要安装证书(除非可能通过这个使用普通证书文件的hack ),我不想这样做。
-
身份validation层应包含用户名/密码validation程序。
我配置我的服务使用:
即使传输层是HTTP(而不是HTTPS),这是否会使WCF创建另一个与SSL等效的安全层? 如果没有,安全强度方面有什么不同?
另外,有没有办法在不使用SSL证书的情况下保护元数据端点(不是必需的但是会受到赞赏)?
以下是我自托管服务的完整配置代码:
谢谢!
默认情况下,所有安全的 WCF绑定(如wsHttpBinding)都将对消息进行加密和签名。
SSL强制使用证书,你提供的链接中的黑客攻击是黑客wcf,而不是SSL。 因为没有SSL WCF禁止使用basicHttpBinding(以明文forms发送xml)和UserNamePasswordValidator,因为在这种情况下拦截消息的任何人都可以获得用户名/密码。
使用WSHttpBinding,您可以避免使用SSL并将安全性置于消息级别。
我强烈建议您阅读本文 ,尤其是服务凭据和协商章节:
为了支持相互身份validation和邮件保护,服务必须向调用者提供凭据。 使用传输安全性(SSL)时,将通过传输协议协商服务凭据。 使用Windows凭据时,还可以协商消息安全性的服务凭据; 否则必须指定服务证书
使用UserNamePasswordValidator
,您必须在服务器上配置证书以允许客户端签名并加密每条消息(使用证书的公钥)。 如果您使用的是Windows身份validation,则不需要它。
你为什么这么担心证书?