INTEGRITY Документация

mTLS

При использовании HTTPS, сервер предъявляет сертификат, чтобы клиент мог его проверить и подтвердить подлинность сервера. Для еще более высокого уровня безопасности некоторые сервисы требуют, чтобы клиент тоже предъявил сертификат.

Этот процесс, известный как mTLS - переносит аутентификацию на уровень протокола TLS вместо управления ею в коде приложения. Соединения от неавторизованных клиентов отклоняются уже во время TLS-рукопожатия.

Чтобы предъявлять клиентский сертификат при обращении к сервису, создайте сертификат mTLS привязка в файле Wrangler вашего проекта Worker. Это позволит вашему Worker предъявлять сервису клиентский сертификат от вашего имени.

Сначала загрузите сертификат и его закрытый ключ в свой аккаунт с помощью wrangler mtls-certificate команда:

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

Затем обновите файл Wrangler проекта Worker, чтобы создать привязку сертификата 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>;