首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL/TLS客户端身份验证-实用客户证书验证

SSL/TLS客户端身份验证-实用客户证书验证
EN

Security用户
提问于 2015-05-20 20:34:33
回答 2查看 2.8K关注 0票数 4

真正的HTTPS服务器如何验证客户端证书?我的背景是企业对企业而不是普通的人类客户。我了解可信根CA证书的基本链验证。但是服务器通常有某种配置来指定他们想要信任的证书的主题名称,或者指纹值吗?

在一种情况下,代理服务器的私有CA可以对客户端证书进行签名,以便只接受它们的证书。在另一种情况下,服务器在其信任存储中信任由“常规”受信任CA (由客户选择)签名的证书。但是,如果您的系统要关闭(就像企业对企业的情况一样),那么您需要额外的筛选。

我意识到在应用程序级别,如果证书链可用,那么任何进一步的自定义筛选都可以完成。但我只想知道,在现实世界中,开箱即用,在TLS握手过程中,有什么额外的配置web服务器需要处理这个问题。

谢谢。

EN

回答 2

Security用户

发布于 2015-05-20 21:53:30

当服务器使用IIS时,客户端身份验证意味着将客户端证书映射到标识,即帐户(本地帐户或域帐户,视上下文而定)。IIS可以应用两种不同的方法,名称混淆:

  • clientCertificateMappingAuthentication:IIS将查找一个域帐户,该帐户要么包含确切客户端证书的副本,要么至少有一个域帐户的用户-主体-名称属性与证书中包含的帐户相匹配(作为otherName类型的Subject Alt Name,使用微软指定的OID标识)。UPN的使用受某些神秘条件的影响,包括将立即颁发的CA证书(而不是根CA)的副本存储在IIS服务器计算机的"enterprise NTAuth“证书存储中,或者存储在AD服务器的证书存储中,或者两者都存储。您可以使用这个博客页面进行一些指导。
  • iisClientCertificateMappingAuthentication:这个有两个子方法,IIS文档称之为“一对一映射”和“多对一映射”。在一对一映射中,IIS配置包含从精确证书(Base64中的完整证书)到帐户(本地或域)的显式映射。在多对一映射中,配置包含一些基本匹配IssuerDN和SubjectDN部分的规则,并将匹配证书显式映射到给定帐户。

在非微软世界中,在Apache服务器中,您将使用SSLRequire实现基于从证书中提取的元素(实际上是IssuerDN和SubjectDN)的访问规则。

必须记住的是:

  • 证书用于身份验证,而不是授权。前者是关于确定谁在调用,后者是关于决定是否应该允许特定客户端执行请求的访问。IIS模型主要使用访问权限进行授权:一旦证书被映射到一个帐户,其余的都是特定于AD的内容,不再与证书有任何关系;这可能是简单的文件访问权限,也可能是更细粒度的AzMan授权配置,或者在最近的Windows版本中替代它。试图使用证书进行授权(例如,颁发客户端证书,其中包含一些信息,如“可以执行X操作”)通常以流泪和咬牙切齿结束。尽管它很笨重,但Microsoft方法的优点是可以清楚地将身份验证和授权分离开来。
  • 始终有一个证书验证步骤,它确保证书是真实的和可接受的。这包括检查所有日期,密码签名,名称链接,撤销状态.
  • 可能会对路径进行额外的筛选,就像IIS在使用基于UPN的客户端证书映射时所做的那样:企业NTAuth存储中存在颁发CA作为额外的检查,它将拒绝有效的证书路径,来自可接受的根,但没有通过预期的中间CA。
票数 3
EN

Security用户

发布于 2015-05-20 21:34:47

我不确定有什么解决办法。不同的策略用于实现不同的功能。

B2B部署的一个常见策略是服务器的组织充当CA,并从客户端签名公钥。当接收到客户端证书时,服务器验证签名,然后将证书映射到用户。用户映射通常通过从cert中提取字段来完成,但是也可以使用cert查找或其他策略。

如何实现此验证和映射将取决于所使用的服务器。

需要注意的一点是,您只能信任SSL互握手中使用的客户端证书。别让客户把他们的证书给你。您需要从SSL子系统获得它,以确保它已被验证(即:客户端已经证明它们持有与证书相对应的私钥)。

票数 -1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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