首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用客户端SSL证书作为web应用程序身份验证

使用客户端SSL证书作为web应用程序身份验证
EN

Security用户
提问于 2013-03-05 07:25:55
回答 1查看 9.6K关注 0票数 10

我正在开发一个具有需要认证的简单API的web应用程序。对于我的应用程序性质,用户有两个RSA密钥,用于签名和加密消息。我的协议就是以此为基础的。web应用程序可以访问公钥。

实现身份验证和杀死MITM的一个解决方案是通过应用程序API构建SSL,并使用用户密钥构建身份验证方法。简单的消息传递。但我在考虑另一种方法。基于SSL客户端认证进行身份验证。我在以前的项目中使用了客户端证书,但我在决定是否将其用于该项目时遇到了一些问题:

  1. 用一个用户RSA密钥为它生成证书是个坏主意吗?
  2. 是否有任何web服务器(作为SSL包装器)允许我在SSL与外部程序协商期间扩展功能?我的意思是,当用户发送SSL请求时,我会在数据库(a)中查找他的证书,如果发现,将记录作为会话ID插入到数据库中,web应用程序将使用此(b)。这不仅意味着授予某些用户访问权限,还意味着查找哪些用户已登录。答:至少nginx支持将接收到的客户端证书传递给web应用程序。我经过这个。
  3. 性能分析。我对大量用户和基于证书的身份验证性能表示怀疑,但是身份验证是我的应用程序中应该完成的部分,SSL也是。与仅使用服务器证书相比,在使用客户端和服务器证书时,我还能期望额外的负载和延迟吗?答:见MadHatter的回答

谢谢你的建议,也很抱歉我的英语不好。

EN

回答 1

Security用户

回答已采纳

发布于 2013-03-05 09:29:27

  1. 进行客户端证书验证的通常方法是创建您自己的证书颁发机构( CA ),并使用该CA来创建分发给客户端的客户端证书。然后,服务器只需检查客户端证书是否具有来自预先配置的CA的有效签名,或者是否具有返回到该CA的有效信任链,才能知道客户端证书是好的。
  2. 请参见上面的。
  3. 很少额外的开销,至少在上面做的时候。所有客户端都有证书(公钥),它们只是(通常)自签名,只用于加密,而不是加密和身份验证;如果客户端使用具有有效签名的证书,那么让服务器验证该证书是非常小的额外开销。
票数 6
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/31971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档