【问题标题】:WCF Security using NetTCPBinding with TcpClientCredentialType.Windows使用带有 TcpClientCredentialType.Windows 的 NetTCPBinding 的 WCF 安全性
【发布时间】:2014-12-22 13:56:33
【问题描述】:

我是WCF 的新手,我有一个相对简单的问题,我似乎找不到简单的答案。我正在尝试查看是否必须明确使用证书来验证绑定的两端都是真实的。我更愿意使用TcpClientCredentialType.Windows 安全性来为我使用ProtectionLevel.EncryptAndSign。这足以让客户端和服务器相互信任他们没有被篡改吗?我的客户端 dll 和服务器进程都使用相同的证书进行签名,但是有人可以创建一个使用我的合同的虚假服务而我的客户端不会意识到吗?

【问题讨论】:

    标签: c# .net wcf security service


    【解决方案1】:

    MSDN 包含使用 Windows Communication Foundation (WCF) 创建安全应用程序时要考虑的最佳实践列表。

    WCF 提供两种对等身份验证机制:X509 证书(由对等通道使用)和 Windows 身份验证,其中 SSPI 协商从 Kerberos 降级到 NTLM。使用 1024 位或更大的密钥大小的基于证书的身份验证优于 NTLM,原因如下:

    • 相互身份验证的可用性,
    • 使用更强大的加密算法,以及
    • 使用转发的 X509 凭据的难度更大。

    为了确保最佳端点安全性,您可能需要考虑使用证书,甚至是自签名证书。

    【讨论】:

    • 感谢您的快速响应并原谅我的无知,但您是说 Windows 身份验证就足够了(提供服务进程使用相同的证书签名)让我的客户对 WCF 感到满意它所连接的服务是它所期望的真实服务,而不是假服务?
    • 错字大声笑,应该读作“不足”,这当然完全颠倒了意思。因此,对于验证,我力求确保两端都是真实的,你说我必须使用证书?
    • 我不认为你“必须”使用证书,而是证书恕我直言(并且根据 MSDN)代表了保护 Web 服务和验证端点身份的最佳实践
    • 我的问题是我将在客户机器上安装 WCF 服务和客户端,但我想防止客户用他们自己的替换我的正版服务。看来我必须提供受证书保护的设置,但这意味着使用私钥颁发证书。这是我认为尚未完成的事情,所以我正在努力了解如何在不影响安全性的情况下实现对客户端/服务器真实性的验证。我错过了什么吗?
    • 在公钥基础设施 (PKI) 中,不应交换私钥。而是交换仅包含公钥的数字证书。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2010-10-27
    • 2011-07-23
    • 1970-01-01
    • 2013-01-19
    • 2011-02-01
    相关资源
    最近更新 更多