对于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,则不需要它。

你为什么这么担心证书?