.net WCF安全-证书

.net WCF安全-证书,.net,wcf,security,iis,encryption,.net,Wcf,Security,Iis,Encryption,我有一个关于WCF安全性的问题。我没有具体的问题,但更多的是一般性问题 如果我创建一个WCF服务及其受保护的使用证书,那么使用该服务的每个客户端是否都需要相应的客户端证书 例如,如果我有一个与WCF服务(使用证书)对话的Winforms客户端应用程序,客户端是否必须具有匹配的客户端证书或者客户端可以在没有安装证书的情况下进行通信吗 谢谢。您可能会混淆服务器证书和客户端证书。当你说该服务“受证书保护”时,不清楚你的意思是什么。服务器和客户端证书都可以“保护”服务,尽管方式不同——通过加密通信来保护

我有一个关于WCF安全性的问题。我没有具体的问题,但更多的是一般性问题

如果我创建一个WCF服务及其受保护的使用证书,那么使用该服务的每个客户端是否都需要相应的客户端证书

例如,如果我有一个与WCF服务(使用证书)对话的Winforms客户端应用程序,客户端是否必须具有匹配的客户端证书或者客户端可以在没有安装证书的情况下进行通信吗


谢谢。

您可能会混淆服务器证书和客户端证书。当你说该服务“受证书保护”时,不清楚你的意思是什么。服务器和客户端证书都可以“保护”服务,尽管方式不同——通过加密通信来保护服务器证书,通过将服务仅限于授权客户端来保护客户端证书

仅使用服务器证书的设置类似于通过HTTPS提供服务的任何网站-只有服务器具有“已安装”证书(意味着它具有证书的私钥)。尽管客户机没有自己的证书,但服务器会将自己的证书传输给客户机,客户机可以使用证书验证服务器的身份,前提是客户机信任签署证书的机构。此外,一旦建立了服务器标识,证书将为加密客户端和服务器之间的会话提供基础

到目前为止,在这个故事中还没有客户机身份验证:尽管客户机知道他们正在与他们想要的服务器通信(由于服务器证书),并且所有通信都是加密的,但服务器无法验证连接到它的客户机的身份。客户端证书是执行客户端身份验证的一种方式;一个更常见的选择是用户名和密码

要使用客户端证书,每个客户端必须具有有效的证书和私钥,这与服务器的证书不同。同样,服务器不一定存储这些证书的本地副本-它们在安全握手期间交换


在此上下文中,“有效”是指使用某些既定标准(例如,客户端证书的白名单,或要求特定机构颁发客户端证书),可作为服务器的身份识别手段。虽然客户端通常可以简单地信任证书颁发机构链直至受信任的根,以便接受有效的服务器证书,必须对可接受的客户端证书施加一些附加限制才能用于身份验证-在大多数情况下,允许任何具有受信任证书的任意客户端连接到配置为使用客户端证书对客户端进行身份验证的服务是没有帮助的。

弗罗斯特先生,让我先简单介绍一下证书的工作原理,这很重要:

  • 浏览器(此处浏览器是客户端,可以是任何其他客户端)请求安全页面(通常为https://)

  • web服务器发送其公钥及其证书

  • 浏览器检查证书是否由受信任的用户颁发 当事方(通常是受信任的根CA)认为证书仍然有效 有效且证书与所联系的站点相关
  • 然后浏览器使用公钥对随机对称密钥进行加密 加密密钥,并使用加密的URL将其发送到服务器 以及其他加密的http数据
  • web服务器使用其 私钥,并使用对称密钥解密URL和http 数据
  • web服务器发回请求的html文档和http数据 用对称密钥加密
  • 浏览器使用 对称密钥并显示信息
  • 现在,客户机证书和服务器证书之间有什么区别,请参阅


    现在,回答您的问题“客户是否必须拥有匹配的客户证书”,是的,没有这一点,这个概念就无法工作。

    谢谢您的明确回答。我混淆了HTTPS证书和WCF证书。你的解释说明得很清楚。再次感谢。抱歉,但据我所知,没有什么比HTTPS证书或WCF证书更好的了,从概念上讲,它们都只是证书,它们的工作方式都是一样的。你能详细说明一下吗。