与其他 WinFX 下的绑定一样,NetPeerTcpBinding 默认启用了安全功能,并提供传输安全和消息安全(或两者同时)选项。 本主题讨论这两种类型的安全性。 安全类型由绑定规范(SecurityMode)中的安全模式标记指定。
基于传输的安全
对等通道支持两种类型的用于保护传输安全的身份验证凭据,这两种类型都要求设置关联 ClientCredentialSettings.Peer 上的 ChannelFactory 属性:
密码。 客户端使用机密密码的知识对连接进行身份验证。 使用此凭据类型时,
ClientCredentialSettings.Peer.MeshPassword必须携带有效的密码,并且X509Certificate2实例是可选的。证书。 使用特定的应用程序身份验证。 使用此凭据类型时,必须在X509CertificateValidator中使用
ClientCredentialSettings.Peer.PeerAuthentication的具体实现。
基于消息的安全
应用程序可以使用消息安全性对传出消息进行签名,以便所有接收方都可以验证消息是否由受信任的方发送,并且消息未被篡改。 目前,对等通道仅支持 X.509 凭据消息签名。
最佳做法
- 本部分讨论保护对等通道应用程序的最佳做法。
通过对等通道应用程序实现安全性
由于对等通道协议的分布式性质,很难在不安全的网格中强制实施网格成员身份、机密性和隐私。 请务必记住,确保客户端与解析程序服务之间的通信安全。 在对等名称解析协议(PNRP)下,使用安全名称以避免欺骗和其他常见攻击。 通过在客户端用来联系解析程序服务的连接上启用安全(包括基于消息的安全和基于传输的安全),可以保护自定义解析程序服务的安全。
使用最强大的安全模型
例如,如果需要单独标识网格的每个成员,请使用基于证书的身份验证模型。 如果无法实现,请遵循当前建议使用基于密码的身份验证来保护它们。 这包括仅与受信任的方共享密码、使用安全介质传输密码、频繁更改密码以及确保密码强(至少八个字符长),包括两种情况下至少一个字母、数字和特殊字符。
从不接受 Self-Signed 证书
绝对不要接受基于主题名称的证书凭据。 请注意,任何人都可以创建证书,任何人都可以选择要验证的名称。 为了避免欺骗的可能性,请根据颁发机构凭据(受信任的颁发者或根证书颁发机构)验证证书。
使用消息身份验证
使用消息身份验证来验证消息是否源自受信任的源,并且传输过程中没有人篡改该消息。 如果没有消息身份验证,恶意客户端很容易欺骗或篡改网格中的消息。