Authentication 为什么要使用证书对客户端进行身份验证?
我正在使用python的twisted实现一个客户端,该客户端在连接时检查服务器ssl证书,基本上遵循这个方法。我在很多howto中看到过,比如这个howto,服务器也通过ssl证书检查客户机的真实性。目前,我使用唯一id和1024个字符字符串对我的客户机进行身份验证(它们是没有人工交互的自动客户机)Authentication 为什么要使用证书对客户端进行身份验证?,authentication,ssl,certificate,client-server,Authentication,Ssl,Certificate,Client Server,我正在使用python的twisted实现一个客户端,该客户端在连接时检查服务器ssl证书,基本上遵循这个方法。我在很多howto中看到过,比如这个howto,服务器也通过ssl证书检查客户机的真实性。目前,我使用唯一id和1024个字符字符串对我的客户机进行身份验证(它们是没有人工交互的自动客户机) 我不明白的是,我为什么要使用整个ssl,而不是只向服务器发送“密码”。在所有连接都已ssl加密后,检查服务器证书和所有内容。这是一个类似的问题,但我想知道为什么人们使用ssl客户端证书,而不仅仅是
我不明白的是,我为什么要使用整个ssl,而不是只向服务器发送“密码”。在所有连接都已ssl加密后,检查服务器证书和所有内容。这是一个类似的问题,但我想知道为什么人们使用ssl客户端证书,而不仅仅是使用ssl客户端证书的最佳方式。检查证书可以确保您正在连接到您希望连接的用户。它可以防止“中间人”攻击
有关客户端未正确检查证书链的相关情况,请参阅,因此,使用中间人攻击可以非常容易地利用SSL。拥有由证书颁发机构签名的SSL证书意味着SSL证书所有者已经经历了由CA验证其所有者身份的麻烦。例如,如果您有一个名为widgetsdeluxe.com的电子商务商店,并且您有一个由Verisign等签署的widgetsdeluxe.com域证书,购物者将知道,当他们访问该网站时,证书上的名称与他们访问的实际域名匹配,然后,他们可以相信信息是安全的,并且来自widgetsdeluxe.com域(这是为了防止欺骗和中间人攻击)。客户端证书限制获得证书授权的人访问。假设您的证书被正确分发和管理,这使得从未经授权的位置(或者说,bot网络)连接变得更加困难,因为您需要的不仅仅是用户名和密码
客户端证书是纵深防御策略的一个潜在部分,如果您处于一个可以管理客户端证书的环境中,。证书很容易撤销。密码可能会被窃取,但窃取客户端证书要困难得多。使用基于客户端证书的相互身份验证至少可以防止以下攻击/问题:
- 仿冒密码
- 密钥记录密码
- 肩上冲浪的密码
- 猜密码
- 多个服务上的密码重用
- 可扩展性更好:使用共享密钥,每个节点都必须与其他节点共享不同的密钥/密码,从而导致(n-1)!密码,而使用证书时,每个节点只需要一个证书和私钥(n个证书加一个CA)
- 将钥匙存储在HSM上,从而防止钥匙被数字复制/窃取的可能性