MST
星途 面试题库

面试题:安全认证 - TLS加密通信中握手过程常见误区

请阐述TLS加密通信握手过程中,开发者常出现的对证书验证方面的误区有哪些,并说明正确的验证方式。
13.7万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试

证书验证误区

  1. 忽略证书链验证:只验证终端实体证书,而不验证整个证书链。一个完整的证书信任链从根证书开始,中间可能有多级中间证书,到终端实体证书结束。若忽略中间证书验证,攻击者可能伪造中间证书进行中间人攻击。
  2. 不检查证书有效期:认为只要证书存在就有效,不检查证书的起止日期。过期的证书可能已被撤销,使用过期证书通信存在安全风险。
  3. 仅验证证书签名:仅验证证书数字签名的正确性,而不检查证书其他关键信息,如证书用途、扩展字段等。例如,证书可能被标记为仅用于签名邮件,但却被用于TLS通信,这种情况下即使签名正确,使用也是不恰当的。
  4. 信任所有自签名证书:自签名证书通常由组织或个人自行创建,缺乏权威CA的背书。信任所有自签名证书,可能会接受恶意攻击者伪造的自签名证书,导致通信被监听或篡改。
  5. 不验证证书的颁发机构(CA):随意信任未知或不可信的CA颁发的证书。有些攻击者可能创建自己的CA并颁发恶意证书,如果不验证CA的可信度,就容易受到攻击。

正确验证方式

  1. 完整证书链验证:从终端实体证书开始,向上验证每一级证书,直到根证书。根证书通常预装在操作系统或浏览器的信任根证书库中。确保证书链中每个证书的签名都由其上级证书正确验证。
  2. 检查证书有效期:验证当前日期是否在证书的起止日期范围内。如果当前日期超出此范围,证书应被视为无效。
  3. 全面检查证书关键信息:不仅验证签名,还要检查证书用途(如扩展字段中Key Usage和Extended Key Usage)是否适合TLS通信。例如,TLS服务器证书的Extended Key Usage应包含服务器身份验证(serverAuth)。
  4. 谨慎处理自签名证书:仅在确实信任自签名证书的创建者且有合理安全理由的情况下,手动导入并信任自签名证书。在生产环境中,尽量避免使用自签名证书,除非有严格的安全管控措施。
  5. 验证CA的可信度:只信任知名、可靠的CA颁发的证书。可以通过查询权威的CA信任列表,或者依赖操作系统、浏览器等内置的信任CA列表来验证CA的合法性。对于非标准或自定义的CA,需严格评估其可信度和安全性。