跳转到内容
搜索文档

mTLS

最后更新 查看 MarkdownAgent 设置

使用 HTTPS 时,服务器会向客户端出示证书,以便客户端进行身份验证以证明其身份。为了更严格的安全,某些服务要求客户端也出示证书。

此过程(称为 mTLS)将身份验证移至 TLS 协议层,而不是在应用程序代码中管理。来自未授权客户端的连接在 TLS 握手期间被拒绝。

要在与服务通信时出示客户端证书,请在 Worker 项目的 Wrangler 文件中创建 mTLS 证书绑定(binding)。这将允许 Worker 代表您向服务出示客户端证书。

首先,使用 wrangler mtls-certificate 命令将证书及其私钥上传到您的账户:

npx wrangler mtls-certificate upload --cert cert.pem --key key.pem --name my-client-cert

然后,更新 Worker 项目的 Wrangler 文件以创建 mTLS 证书绑定:

{
	"mtls_certificates": [
		{
			"binding": "MY_CERT",
			"certificate_id": "<CERTIFICATE_ID>"
		}
	]
}
[[mtls_certificates]]
binding = "MY_CERT"
certificate_id = "<CERTIFICATE_ID>"

添加 mTLS 证书绑定后,Worker 环境中会包含一个变量,其上可用 fetch() 方法。此 fetch() 方法使用标准 Fetch API,与全局 fetch 具有完全相同的签名,但在建立 TLS 连接时始终出示客户端证书。

接口

export default {
	async fetch(request, environment) {
		return await environment.MY_CERT.fetch("https://a-secured-origin.com");
	},
};
interface Env {
  MY_CERT: Fetcher;
}

export default {
    async fetch(request, environment): Promise<Response> {
        return await environment.MY_CERT.fetch("https://a-secured-origin.com")
    }
} satisfies ExportedHandler<Env>;

这篇文档对您有帮助吗?