-
转到 Cloudflare 仪表板,选择你的账户和域名。
-
导航至 SSL/TLS > 客户端证书,在 Hosts(主机) 部分,选择 Edit(编辑) 以添加要为其启用 mTLS 的主机名。
示例主机:
mtls-test.example.com -
选择 Add certificate(添加证书)。Cloudflare 托管的 CA 为默认 Certificate authority(证书颁发机构)。
-
填写所需字段。你可以选择以下选项之一:
- 使用 Cloudflare 生成私钥(通常称为私有证书)和证书签名请求 (CSR)(其中包含公共证书)。
- 使用你自己的私钥和 CSR,这还允许你标记客户端证书。
要生成并使用你自己的 CSR,可以运行类似以下的命令:
openssl req -new -newkey rsa:2048 -nodes -keyout client1.key -out client1.csr -subj '/C=GB/ST=London/L=London/O=Organization/CN=CommonName'或者使用类似 GitHub ↗ 上的脚本。
切记复制创建证书时显示的数值,因为在创建后这些数值将无法再查看。
为了让客户端能够使用你创建的客户端证书,该证书必须安装在你打算使用的设备上。你需要将其放置在目标 API / 主机名对应的进程 / 脚本相同的目录下。
我们通常建议每台设备使用一个客户端证书。配置你的系统以实际使用公钥和私钥证书尤为重要。
例如,在 MacBook 笔记本电脑上将两个证书添加到钥匙串 (Keychain) ↗。
另一个示例是生成 PKCS12 (P12) 证书 ↗ 文件,然后将其添加到你的浏览器 ↗:
openssl pkcs12 -export -out certificate.p12 -inkey private-cert.pem -in cert.pem使用上一步中的数值。
使用 cURL 命令的示例:
curl -v --cert cert.pem --key private-cert.pem <HOSTNAME>使用上一步中的数值。
mTLS 会在 Cloudflare WAF 阶段 被验证和检查。这是通过使用动态字段创建 WAF 自定义规则 来完成的。
所有客户端证书详细信息均可在 Cloudflare 规则集引擎 的 cf.tls_* 字段中找到。
带有操作块的 WAF 自定义规则示例:
在公钥和私钥证书位于同一目录的情况下,使用以下 cURL 命令,我们将获得访问权限:
curl -I --cert cert.pem --key private-cert.pem https://mtls-test.example.com/mtls-testHTTP/2 200
server: cloudflare如果不带证书,终端将显示以下内容:
curl -I https://mtls-test.example.com/mtls-testHTTP/2 403
server: cloudflare