当ServiceCertificate.Authentication.CertificateValidationMode设置为none时,会产生什么样的特定风险

时间:2018-06-19 11:42:52

标签: .net web-services wcf security certificate

我正在使用WCF生成的客户端与Apache Axis(我认为)Web服务一起使用。为了使通信正常进行,我必须设置很多特定的配置,自定义绑定,证书等。

好吧,为了执行身份验证(使用SOAP标头),我要记住的东西:我用我的私钥签名了一些东西(我认为它是令牌),端点用我的公钥进行了回签(我必须发送我的服务的公共密钥优先)。对于服务端点,这是一回事:服务必须使用我的公钥来检查身份验证。

因此,他们给了我他们的公共证书密钥,以检查端点是否是它声称的身份。设置“ ServiceCertificate.Authentication.CertificateValidationMode”中有一个选项,所以我的问题是,如果将此选项设置为“ none”会发生什么?设置此选项时,会产生什么样的特定风险? 例如:如果连接是由代理建立的,则该代理是否有可能取代我向其发送请求的服务?

预先感谢

1 个答案:

答案 0 :(得分:2)

如果通过将ServiceCertificate.Authentication. CertificateValidationMode设置为none来禁用证书验证,则您的应用程序(客户端)将容易受到“中间人”攻击。 未经验证,您的应用程序将无法确定服务器的身份,因此客户端无法确定端点是真实站点。

您可能希望将CertificateValidationMode设置为PeerOrChainTrust,而不是禁用SSL证书验证,其中“如果证书在受信任的人商店中,或者如果链建立到受信任的根存储中的证书颁发机构。” 这样,如果证书来自有效的第三方(Verisign),则可以依靠证书链仅验证根证书。否则,您可以将服务器证书导入证书存储的“受信任的人”中。