Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用传输安全性时是否需要WCF的SSL?_.net_Wcf - Fatal编程技术网

.net 使用传输安全性时是否需要WCF的SSL?

.net 使用传输安全性时是否需要WCF的SSL?,.net,wcf,.net,Wcf,好吧,我可能在WCF配置中走得太远了,从树上看不到森林,所以我想检查一下安全性 我在WCF服务中公开了(2)个绑定,用于客户端使用的选项:netTcpBinding和wsHttpBinding(两者都很好,也都可以使用)。我已使用默认值配置了这两个选项:clientCredentialType=“Windows”。我已经将wsHttpBinding配置为使用SSL证书并通过https公开端点(我想要这个),并且还为netTcpBinding配置了SSL证书以通过TCP使用SSL(我也想要这个)

好吧,我可能在WCF配置中走得太远了,从树上看不到森林,所以我想检查一下安全性

我在WCF服务中公开了(2)个绑定,用于客户端使用的选项:netTcpBinding和wsHttpBinding(两者都很好,也都可以使用)。我已使用默认值配置了这两个选项:clientCredentialType=“Windows”。我已经将wsHttpBinding配置为使用SSL证书并通过https公开端点(我想要这个),并且还为netTcpBinding配置了SSL证书以通过TCP使用SSL(我也想要这个)

在这里,我不断得到各种各样的信息。显然,“运输”安全是天生安全的。这是否意味着如果我想保护传输层,我不需要SSL证书?

在这个设置中,“传输”安全性就是告诉WCF您确实希望它使用SSL的方式。为了使SSL正常工作,您需要一个客户端可以验证的服务器证书(来自签名机构或安装在客户端上的自签名机构)


所以你说得对。:)

我必须在多篇文章之间进行大量阅读,才能从我的原始帖子中获得我想要的详细信息。以下信息帮助我澄清了一些问题:

每个协议(TCP、HTTP、MSMQ、NamedPipes)都有自己的机制来传递凭据和处理消息保护

以上是从

来自一个主要的web背景,我对HTTP和使用SSL证书保护HTTP有很好的理解。但是,在Windows环境中,net.tcp不需要这个确切的过程,它在Windows中使用自己的方法来保护传输层

因此,当谈到这个问题时,下面是关于在Windows环境中保护HTTP绑定和net.tcp的(2)个解释,我想了解一下:

对于net.tcp:使用Windows身份验证对服务和客户端进行身份验证,并通过Windows安全性在传输级别保护消息

对于HTTP绑定(即wsHttpBinding):使用HTTP绑定时,传输安全性由SSL提供。SSL证书用于提供消息保护

因此,我不需要为net.tcp绑定提供SSL证书,因为它由Windows安全性处理,并且在使用传输安全性时具有固有的安全性。当使用wsHttpBinding时,我仍然需要使用SSL证书来保护传输,正如我前面提到的那样,并通过HTTPS公开绑定

如果未来的读者有类似的问题,我发布的WCF指南链接和下面的链接是一个很好的起点:

常见WCF安全场景:

感谢您的回复,我非常感谢。我还是有点困惑(我读了好几遍你的回复);所以说得对,我不需要SSL证书,因为它本质上是安全的,或者我确实需要它?我试图找到一篇很好的MSDN文章(我现在大约有10篇未读),试图解释传输安全性及其与SSL的关系,以便在Windows凭据设置环境中实现安全性。我想我已经有了所有的链接,仍然在试图理解应用SSL(当需要安全性时)对我的设置是否有意义。谢谢我相信我非常清楚wsHttpBinding。为了保护传输安全,应该使用配置的SSL证书通过https公开绑定。完成。如果这能被证实的话,我会同意的。我仍然感到困惑的是net.tcp绑定。我读到的一些地方,此绑定的安全性是由操作系统提供的(传输模式的安全性是通过在TCP上实现传输层安全性(TLS)来提供的。TLS实现是由操作系统提供的),还有一些地方说:对于TCP,它是通过TCP或Windows实现的SSL。因此,在net.tcp绑定上仍然存在一些混乱。您需要服务器证书才能使用SSL。证书是客户端如何知道他们从服务器收到的消息实际上来自服务器,并且在传输过程中没有被截获和更改。net.tcp正在使用所描述的TLS。是的,这是我今天早上看到的相同的链接。我没有读到任何关于“TLS”的特别解释(Windows安全,是的),但它是我在后续回答中所做的大量相关评论的来源。很好的总结!需要明确的是,此配置的“消息保护”意味着建立一个加密通道(传输),通过该通道将消息传输到服务。消息本身没有加密,也不需要加密,因为通道是安全的。WCF还具有消息级安全性(在此配置中未启用),该安全性对消息本身进行加密,以便它可以通过不安全的通道传输,或通过中介进行传输,从而损害消息的内容。谢谢!WCFSecurityGuid(第127页)中的一些信息详细介绍了安全模式及其描述:无:未提供安全性;您不应该使用此选项。传输:在传输级别提供相互身份验证和消息保护。消息:在消息级别提供相互身份验证和消息保护。两者:在传输和消息级别都提供相互身份验证和消息保护。这远远超出了大多数场景的需要。续。。。TransportWithMessageCredential:在消息级别提供客户端身份验证,在传输级别提供消息保护和服务身份验证。TransportCredentialOnly:在传输级别提供相互身份验证,但不提供消息保护。@SixtoSaez只是想澄清一下:这是否意味着欺骗(或获得)Windows身份验证的黑客可以读取并可能更改客户端和服务之间的消息通信量?抱歉,我刚注意到这一点