我有一个关于相互TLS(MTLS)的问题
我知道对于MTLS,双方,客户端和服务器交换证书。这些证书应由双方可以信任的CA签署,以验证证书。
我的问题是,MTLS是否还意味着除了验证证书(如果CA是可信的,叶证书是可信的),任何一方(服务器或客户端)也可以执行一些额外的检查,如主机名检查或客户端是否连接到服务器是否在已批准的可信实体列表中?
有人能指出MTLS规范吗?MTLS的头脑是什么?
谢谢!
答案 0 :(得分:7)
除了EJP所说的关于“MTLS”术语的内容之外,TLS 1.2 specification对于要检查哪些信息以及以何种方式没有严格的要求。
由接收方决定是否信任所提供的证书。这意味着,例如,服务器可以仅接受属于拥有服务器的公司的CA颁发的证书。这就是客户银行访问系统经常工作的方式 - 它们只接受银行颁发的证书,此类证书的通用名称必须与Web表单中提供的用户名相对应。
双方都可以自由检查证书中的任何信息,包括公钥哈希的直接比较(因此,无论其他证书属性中包含什么,只有特定的密钥对才有效。)
答案 1 :(得分:2)
关于此主题的最新的RFC是:
https://datatracker.ietf.org/doc/draft-ietf-oauth-mtls/ 这是OAuth 2.0的扩展
本文档的目的是定义如何在替换客户端ID和密钥(也称为客户端凭据)的上下文中使用TLS证书的机制
该标准建立了两种机制,如何将TLS证书用作客户端凭证,以及相关的令牌流和属性。
总结如下:
(a)授权服务器:根据PKI检查证书(由有效根签名)RFC没有定义选项,但它们非常不言自明,取决于用例。但它可以是(1)证书由受信任的根签名,并且不被撤销,(2)基于某些逻辑单独识别每个证书。
(b)资源服务器检查令牌和客户端证书(客户端凭证或CC),并在基础TLS会话中使用。请注意,在TLS层没有关于证书或其来源的验证检查,所有检查都在应用层执行。因此,资源服务器应该以不验证客户端在握手期间提供的证书是否由可信CA证书签名的方式配置TLS堆栈。
这种机制在某些GDPR环境中变得特别有趣,因为它使得无法在客户端和服务器之间共享令牌。
总体而言,这是保护隐私和提高安全性的重要功能。
答案 2 :(得分:1)
没有'MTLS规范',因为没有'MTLS'之类的东西。你刚刚完成了。 TLS 规范,包括相互身份验证,可在修订后的RFC 2246中找到。
TLS API应该使应用程序可以使用对等证书链,因此它可以进行任何其他检查。
'MTLS',就其存在而言,是指多路复用 TLS的互联网草案。