IBM Cloud Docs
使用相互 TLS

使用相互 TLS

相互传输层安全性 (mTLS) 认证可确保客户机与服务器之间的流量在两个方向上都是安全和可信的。 它仅适用于企业或安全套餐级别的客户。

配置 mTLS 时,仅向具有相应客户机证书的请求授予访问权。 当请求到达应用程序时,CIS 将响应对客户机证书的请求。 如果客户机未能提供证书,那么不允许请求继续。 否则,将继续进行密钥交换。

mTLS示意图*
mTLS示意图

配置 Mutual TLS

缺省情况下未启用相互 TLS。 这是需要事先授权和支持的附加服务。

要获取授权,必须提交 IBM 支持案例。

为您的帐户开启 mTLS 后,请执行以下步骤以将其启用。

  1. 浏览至 CIS UI 中的“安全性”页面。
  2. 选择 相互 TLS 选项卡。
  3. 单击 启用 以启用该功能。

启用 mTLS 后,无法将其禁用。

要在IBM Cloud Internet Services用户界面中为特定端点设置mTLS身份验证:

  1. 在“根证书”表中,单击 添加 以定义新的根证书。

  2. 将证书内容粘贴到内容字段中,提供根 CA 的名称,并添加要使用此证书的端点的一个或多个标准域名 (FQDN)。 这些 FQDN 是用于受应用程序策略保护的资源的主机名。 必须将根 CA 与受保护应用程序使用的 FQDN 相关联。

  3. 单击保存

    如果您的区域除了使用根证书之外还使用中间证书,请上载整个链。

  4. 在 MTLS 访问策略表中,创建实施 mTLS 认证的新访问应用程序。 必须使用证书上载模态中关联的主机名来构建应用程序。 预先设置了策略部分以强制实施决策 non_identity,并设置了 include 规则以匹配任何有效证书。

使用cURL进行测试

  1. 通过尝试在没有客户机证书的情况下对站点进行 curl 操作,使用 mTLS 对站点进行测试。 以下 curl 命令示例适用于为 https://auth.example.com 设置了访问策略的站点 example.com:

    curl -sv https://auth.example.com
    

    如果请求中没有客户端证书,则会显示“403禁止”响应,无法访问该网站。

  2. 将客户机证书信息添加到请求:

    curl -sv https://auth.example.com --cert example.pem --key key.pem
    

    认证过程成功完成后,会在响应中返回 CF_Authorization Set-Cookie 头。

验证相互 TLS

启用此访问策略时,请遵循此验证工作流程:

  1. 将评估对源的所有请求以获取有效的客户机证书。 客户机设备发送客户机 "hello"。 访问应用程序通过 "hello" 和对客户机证书的请求进行响应。
  2. 客户机返回有效证书。
  3. 针对根认证中心完成客户机认证握手。
  4. 对于链,存在对已到期证书的检查。 链验证适用于证书验证。
  5. 当根证书信任客户机证书时,将为客户机生成已签名的 JSON Web 令牌 (JWT),以允许继续执行请求和后续请求。 如果请求没有有效的客户机证书,那么 403 Forbidden 将在响应中返回。