CertificateBasedAuthentication搜索了很多,找到了很多关于如何在wcf中实现基于证书的身份验证的答案。但我的问题与它的基本原理有关。在生产中实施基于证书的身份验证时,客户端是否提供服务器需要添加到其可信人员存储中的证书?或者服务器提供证书(由服务器签名)。我认为在配置wcf服务器时我们只需要配置证书位置和存储。我们永远不会将它绑定到任何域。所以任何出示此证书的客户都可以访问我的服务。如果证书需要绑定域。为什么他们不能只允许来自该域的所有请求。当客户端调用wcf服务时,它会出示其证书。证书是否只携带公钥?并且此证书可能被盗(因为它在网络上传播)并被黑客用来使用Web服务。我知道ssl是多么被炒作。在ssl的情况下,浏览器会处理所有这些事情,但在wcf服务的情况下(当我们只想允许特定的客户端访问我们的服务时)如何管理它。提前致谢。让我简单点:我想创建一个Web服务,我希望三个客户端(A、B和C)使用它。我想通过证书对这三个客户端进行身份验证。这些客户需要在我设置时向我发送证书吗?还是我必须为他们创建证书?客户是否也共享他们的私钥(在设置时)我是否需要将这些证书放入受信任的人员存储中?当他们请求Web服务时,他们将出示他们的证书(仅限公钥)。如果他们只提供公钥,黑客就可以窃取这个公钥并请求我的网络服务。我的Web服务如何区分黑客/真实客户端。在生产中实施基于证书的身份验证时,客户端是否提供服务器需要添加到其可信人员存储中的证书?或者服务器提供证书(由服务器签名)。在安全服务中,需要服务器证书。客户端证书是可选的。服务器可以配置为忽略、接受或要求客户端证书。我认为在配置wcf服务器时我们只需要配置证书位置和存储。我们永远不会将它绑定到任何域。所以任何出示此证书的客户都可以访问我的服务。如果证书需要绑定域。为什么他们不能只允许来自该域的所有请求。不确定如何在没有客户端证书的情况下绑定到域。你的意思是反向DNS查找?这需要一个IP地址,恶意用户可以伪造该地址。通过客户端证书限制访问的典型方法是将客户端证书中的字段(通常是主题或域)映射到用户帐户。您可以进行一对一映射(每个客户端证书代表一个用户)或多对一映射(如果客户端具有列表中的证书,则将其视为特定用户)。如果没有证书被映射,用户被认为是匿名的。这里有更多信息,假设您使用的是IIS。当客户端调用wcf服务时,它会出示其证书。证书是否只携带公钥?并且此证书可能被盗(因为它在网络上传播)并被黑客用来使用Web服务。您在安装过程中处理的证书文件包含公钥和私钥。证书本身包含在该文件中;它包含一个包含公钥和MAC签名的有效负载,但不包含私钥。私钥被放入安全存储中,绝不会在任何HTTP请求中发送。只有证书(及其公钥)通过网络发送。不会发送整个文件。编辑以回答更多问题我想创建一个我希望三个客户端(A、B和C)使用的Web服务。我想通过证书对这三个客户端进行身份验证。这些客户需要在我设置时向我发送证书吗?还是我必须为他们创建证书?在安装过程中,客户端证书必须由证书颁发机构(CA)生成。您实际上可以充当从根CA(例如威瑞信)获得授权的中间CA(用于生产证书)的角色。为此,您必须向根授权机构申请证书。他们将向您颁发带有公钥的证书,并为您提供私钥,以便您可以生成自己的证书并对其进行数字签名。您通常会为此权限付费。另外,您可以成为自己的根CA!这在开发阶段很常见。基本上,您生成自己的公钥和私钥并开始生成自己的证书。这些称为自签名证书。成为您自己的CA的缺点是没有人会认出您的公钥,因此为了让任何人都能使用您的证书,您可以手动将您添加到他们信任的根授权机构列表中。客户端是否也共享他们的私钥(在设置时)不,在整个PKI期间没有人与任何人共享私钥。永远。这就是为什么它被称为私钥的原因。唯一的例外是当您是证书颁发机构并且想要生成私钥来创建证书时。在这种情况下,必须注意在处理过程中保护私钥。它永远不会作为SSL通信的一部分通过网络发送。我是否需要将这些证书放入受信任的人员存储中?是的,不。如果您使用自签名证书,则可以。如果您使用由CA签名的证书,而该证书又具有由根CA签名的证书,则根CA也必须在受信任的根颁发机构列表中,但您可能不必添加它。它应该自动存在。这就是使用受信任的root权限的全部意义所在——每个人都应该了解它们并且应该识别他们的公钥。根证书通常在安装期间自动分发给浏览器,并使用浏览器的补丁和更新服务保持最新。当他们请求Web服务时,他们将出示他们的证书(仅限公钥)。如果他们只提供公钥,黑客就可以窃取这个公钥并请求我的网络服务。我的Web服务如何区分黑客/真实客户端。这是一个很好的问题。重要的是要认识到SSL握手不仅仅包括共享证书。除其他事项外,还有挑战/响应步骤。它是这样工作的:您的服务器将生成一个随机数或时间戳(“挑战”)并将其发送到您的浏览器,挑战它以对其进行加密。然后浏览器将使用私钥(它只能访问)来加密挑战。然后将该“响应”发送回服务器进行验证。服务器使用客户端证书中的公钥来解密响应。由于只有客户端拥有私钥,并且由于公钥是已知且可验证的(因为它包含在已签名且防篡改的证书中),因此服务器可以判断响应必须由与其关联的客户端加密.证书。而且因为质询由服务器生成并且每次都不同,黑客无法通过重放对先前质询的响应来冒充客户端。在生产中实施基于证书的身份验证时,客户端是否提供服务器需要添加到其可信人员存储中的证书?如果服务器要求,则为是,否则为否。或者服务器提供证书(由服务器签名)。总是。这些并不相互排斥。两者都可能发生。我认为在配置wcf服务器时我们只需要配置证书位置和存储。我们永远不会将它绑定到任何域。所以任何出示此证书的客户都可以访问我的服务。如果证书需要绑定域。为什么他们不能只允许来自该域的所有请求。我无法做出任何一个的头部或尾部。当客户端调用wcf服务时,它会出示其证书。如果服务器要求它。证书是否只携带公钥?是的。并且此证书可能被盗(因为它在网络上传播)并被黑客用来使用Web服务。不,因为它只包含公钥。以上就是《C#学习教程:证书认证基础知识》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
