我们目前有一组web服务,将接口暴露给各种不同的客户端类型和角色。
背景:
。
我的问题是,在每个请求上验证客户端证书是非常重要的,并且很容易支配应用服务器上的CPU时间。我已经尝试将身份验证和应用程序部分分离到不同的物理服务器上,以减少负载,但这并不能提高整个调度速度--无论在哪里进行身份验证,请求仍然需要一定的时间进行身份验证。
我想尝试通过在成功的客户端证书验证之后生成一个HTTP (与一个相关的服务器端会话)来限制身份验证的数量,当客户端提供该验证时,将导致客户端证书验证被跳过(尽管仍在讨论SSL)。我还想限制会话的时间,并从客户端的角度使进程尽可能透明。
我的问题:
发布于 2009-07-29 03:21:45
在成功的客户端证书验证之后生成HTTP (与相关的服务器端会话),当客户端提供该证书时,将导致跳过客户端证书验证。
这里还是安全的吗?(我们如何优化安全和实用主义?)
从理论上讲,这并不是很安全,因为服务器再也不能向自己证明没有中间人了。
当客户端出现客户端证书时,服务器可以在加密方面信任它。客户端和服务器应该根据客户端的密钥加密和数据(嗯,会话密钥)。在没有客户端证书的情况下,服务器只能希望客户机在验证服务器证书方面做得很好(正如客户机所感知的那样),这样做消除了MitM先生的可能性。
开箱即用的Windows客户端信任200多个根CA证书.在没有客户端证书的情况下,服务器最终通过扩展进行信任。
下面是关于在数据包捕获中查找哪些内容的很好的说明,以验证客户端证书是否提供了针对MitM:http://www.carbonwind.net/ISA/ACaseofMITM/ACaseofMITMpart3.htm的防御
这类MitM的解释。http://www.networkworld.com/community/node/31124
一些防火墙设备盒实际上使用这种技术对SSL进行深入检查。
MitM过去看起来像是一部大型的“任务不可能”式的制作,需要很大的努力才能完成。实际上,尽管它不需要任何妥协的DNS解析器或路由器沿途任何地方。世界上有很多小Linksys和Netgear盒子,其中可能有两三个没有最新的安全更新。
实际上,对于主要金融机构的网站来说,这似乎已经足够了,尽管最近的证据表明,它们的风险评估策略并不理想。
这个方案有免费的实现吗?(我知道CA的SiteMinder产品)
只是一个客户端的饼干,对吧?这似乎是每个web应用程序框架的一个相当标准的部分。
鉴于以上所述,我们应该继续在应用程序中进行身份验证,还是移到服务器中?
硬件密码加速器( SSL代理前端或加速器卡)可以大大加快速度。
将证书验证移到HTTP服务器中可能会有所帮助。你可能在密码数学上做了一些复制。
查看您是否会从客户端证书上的更便宜的算法或更小的密钥大小中获益。
一旦您验证了一个客户端证书,您就可以尝试在短时间内缓存它的散列摘要(甚至整个过程)。这样你就不必在每一次攻击中重复签名验证了。
你的客户多久做一次交易?如果您的大部分事务经常受到影响,您可以说服它们将多个事务合并到一个SSL协商/身份验证中。查看HTTP保持活动头的设置。他们可能已经在某种程度上这样做了。也许您的应用程序正在对每个HTTP请求/响应进行客户端证书验证,或者在每个会话开始时只进行一次验证?
总之,这些都是一些想法,祝你好运!
https://stackoverflow.com/questions/1193013
复制相似问题