13.1 TLS и криптография
- Единственный криптобэкенд — AWS-LC (примитивы, TLS 1.3, QUIC), линкуется статически.
Определяется реализацией. Криптобэкенд (D-8055; DIV-024; D-4739). Выбор библиотеки — за реализацией; требования к протоколам (mTLS между узлами, TLS 1.3, AES-256-GCM, Ed25519 и т. д.) обязательны. Эта реализация использует библиотеку с API libssl, совместимую с OpenSSL ≥ 3.0 (параметр сборки
OXL_TLS_BACKEND=openssl|awslc, по умолчаниюopenssl); сборка с AWS-LC не проверена.
- Межузловой трафик — всегда mTLS. Отключение возможно только в профиле
devфлагом--insecure-dev. - Встроенный CA в координаторе выдаёт узлам сертификаты с идентификатором
oxl://<кластер>/role/<роль>/node/<id>в SAN и ротирует их (по умолчанию раз в 24 ч). Новый узел доказывает право на вход токеномOXL_JOIN_TOKENили токеном сервисного аккаунта Kubernetes. - Внешние слушатели:
expose 443 tls(acme: domain)— сертификат через ACME;tls(cert: path, key: path)— свой.
Определяется реализацией. ACME (D-8055; DIV-024; D-4739). Необязательная возможность. Эта реализация ACME не содержит: сертификат внешнего слушателя задаётся файлами (
tls(cert: …, key: …), флаги--tls-cert,--tls-key). Записьtls(acme: …)в примерах Стандарта (V.5) — как в Стандарте; в приёмочных запусках её заменяют флагами.
- Реализации СЛЕДУЕТ передавать шифрование ядру (kTLS) после хендшейка.
Определяется реализацией. kTLS (D-8055; DIV-024). Требование — СЛЕДУЕТ; эта реализация шифрует в пользовательском пространстве, kTLS не использует.
Определяется реализацией. QUIC и HTTP/3 (D-8055; DIV-024; D-4739). Необязательная возможность (
std.net.Quic, HTTP/3 вstd.http, II.1). Эта реализация транспорт QUIC не содержит.
- Клиент к внешнему адресу:
Users.connect(addr, tls: { ca: path?, pin: sha256"…"? }).
См. также
Исходник: docs/spec/oxl-standard.md