Глава 15. Условия SSL/TLS¶
Условия SSL/TLS позволяют фильтровать трафик по параметрам TLS-соединения: версия согласованного протокола, набор шифров (cipher suite), SNI (Server Name Indication), атрибуты клиентских и серверных сертификатов, ALPN, статус TLS-инспекции (MITM).
Условия этой группы доступны в слоях <Proxy>, <SSL>, <SSL-Intercept> и <Forward> в зависимости от конкретного условия. Условия, связанные с параметрами TLS handshake (версия, шифр, сертификат), требуют завершённого TLS-соединения и доступны в слое <SSL>. Условия, работающие с ClientHello до расшифровки (SNI), доступны в слое <SSL-Intercept>.
15.1. client.connection.negotiated_ssl_version=¶
Проверяет версию протокола SSL/TLS, согласованную между клиентом и прокси во время TLS handshake. Позволяет запретить устаревшие версии протокола или требовать определённую версию.
Синтаксис:
client.connection.negotiated_ssl_version=version
client.connection.negotiated_ssl_version=(version1, version2, ...)
client.connection.negotiated_ssl_version=!version
client.connection.negotiated_ssl_version=!(version1, version2, ...)
где version — одно из: SSLv3, TLSv1, TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3.
Поддерживается отрицание через ! — проверяет, что согласованная версия НЕ совпадает с указанной.
Допустимые слои: Proxy, SSL
Примечание: В <Proxy> layer условие работает для HTTPS запросов с включённой SSL-инспекцией (MITM). Версия берётся из client-side TLS handshake после MITM intercept. Для plain HTTP запросов условие не матчит (версия отсутствует).
BlueCoat CPL Reference: client.connection.negotiated_ssl_version= . Совместимость полная — имя и семантика идентичны BlueCoat ProxySG.
Примеры:
<SSL>
; Запрет устаревших версий TLS
client.connection.negotiated_ssl_version=SSLv3 deny
client.connection.negotiated_ssl_version=TLSv1 deny
client.connection.negotiated_ssl_version=TLSv1.1 deny
; Разрешить только TLS 1.2 и выше
client.connection.negotiated_ssl_version=!(TLSv1.2, TLSv1.3) deny
; Список допустимых версий
client.connection.negotiated_ssl_version=(TLSv1.2, TLSv1.3) allow
См. также: 15.3. server.connection.negotiated_ssl_version=, 28. SSL/TLS действия
15.2. client.connection.negotiated_cipher=¶
Проверяет набор шифров (cipher suite), согласованный между клиентом и прокси при TLS handshake.
Синтаксис:
client.connection.negotiated_cipher=cipher_suite
client.connection.negotiated_cipher=(cipher_suite1, cipher_suite2, ...)
где cipher_suite — имя набора шифров в формате IANA (например, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, ECDHE-RSA-AES128-GCM-SHA256).
Допустимые слои: Proxy, SSL, Exception
Примечание: В <Proxy> layer условие работает для HTTPS запросов с включённой SSL-инспекцией (MITM). Имя cipher берётся из client-side TLS handshake после MITM intercept. Для plain HTTP запросов условие не матчит (cipher отсутствует).
BlueCoat CPL Reference: client.connection.negotiated_cipher= . Совместимость полная — имя и семантика идентичны BlueCoat ProxySG. BlueCoat также поддерживает значение none (нешифрованное соединение).
Примеры:
<Proxy>
; Запрет конкретного cipher через MITM
client.connection.negotiated_cipher=TLS_AES_256_GCM_SHA384 deny
; Разрешить только AES-128, запретить AES-256
client.connection.negotiated_cipher=TLS_AES_128_GCM_SHA256 allow
client.connection.negotiated_cipher=TLS_AES_256_GCM_SHA384 deny
ALLOW
client.connection.negotiated_cipher.strength= / server.connection.negotiated_cipher.strength= — категория стойкости согласованного шифра; поддерживается для обеих сторон (имена как в BlueCoat).
client.connection.negotiated_cipher.strength={low|medium|high|export}
server.connection.negotiated_cipher.strength={low|medium|high|export}
Для server-стороны значение доступно только при SSL-инспекции (MITM) — на сквозном CONNECT-туннеле условие не совпадает.
Пример:
<Proxy>
; Запретить слабые (low) согласованные шифры на клиентской стороне
client.connection.negotiated_cipher.strength=low deny
; Аналогично для upstream-соединения (только при MITM)
server.connection.negotiated_cipher.strength=(low, export) deny
См. также: 15.4. server.connection.negotiated_cipher=, 28. SSL/TLS действия
15.3. server.connection.negotiated_ssl_version=¶
Проверяет версию протокола SSL/TLS, согласованную между прокси и целевым (upstream) сервером. Доступно только при TLS-инспекции (MITM), когда прокси устанавливает отдельное TLS-соединение с сервером.
Синтаксис:
server.connection.negotiated_ssl_version=version
server.connection.negotiated_ssl_version=(version1, version2, ...)
server.connection.negotiated_ssl_version=!version
server.connection.negotiated_ssl_version=!(version1, version2, ...)
где version — одно из: SSLv3, TLSv1, TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3.
Поддерживается отрицание через !.
Допустимые слои: SSL
BlueCoat CPL Reference: server.connection.negotiated_ssl_version= . Совместимость полная — имя и семантика идентичны BlueCoat ProxySG.
Примеры:
<SSL>
; Предупредить, если сервер не поддерживает TLS 1.3
server.connection.negotiated_ssl_version=!TLSv1.3 log.warning("Server does not support TLS 1.3")
; Заблокировать серверы с устаревшими версиями
server.connection.negotiated_ssl_version=(SSLv3, TLSv1) deny
Примечание: Работает аналогично client.connection.negotiated_ssl_version=, но проверяет upstream-соединение. Если TLS-инспекция не активна (tunnel mode), значение отсутствует и условие не срабатывает.
См. также: 15.1. client.connection.negotiated_ssl_version=
15.4. server.connection.negotiated_cipher=¶
Проверяет набор шифров (cipher suite), согласованный между прокси и целевым сервером. Доступно только при TLS-инспекции (MITM).
Синтаксис:
server.connection.negotiated_cipher=cipher_suite
server.connection.negotiated_cipher=(cipher_suite1, cipher_suite2, ...)
где cipher_suite — имя набора шифров в формате IANA.
Допустимые слои: SSL
BlueCoat CPL Reference: server.connection.negotiated_cipher= . Совместимость полная — имя и семантика идентичны BlueCoat ProxySG.
Примеры:
<SSL>
; Логировать, если сервер согласовал слабый шифр
server.connection.negotiated_cipher=DES-CBC3-SHA log.warning("Weak cipher negotiated with server")
; Запрет серверов без поддержки AEAD
server.connection.negotiated_cipher=(TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256) allow
Примечание: Работает аналогично client.connection.negotiated_cipher=, но проверяет upstream-соединение. Если TLS-инспекция не активна, значение отсутствует.
См. также: 15.2. client.connection.negotiated_cipher=
15.5. client.certificate.presented=¶
Проверяет, предоставил ли клиент X.509 сертификат при TLS handshake (mutual TLS / mTLS). Поддерживается bare keyword без =yes (подразумевается =yes).
Синтаксис:
Bare keyword client.certificate.presented (без =) эквивалентен client.certificate.presented=yes.
Допустимые слои: Proxy, SSL
Сравнение с BlueCoat: В BlueCoat CPL Reference существует условие client.certificate.requested=, которое проверяет, запросил ли сервер клиентский сертификат (yes|no). Семантика различается:
Redcoat client.certificate.presented= |
BlueCoat client.certificate.requested= |
|
|---|---|---|
| Что проверяет | Клиент предоставил сертификат | Сервер запросил сертификат |
| Слой | Proxy, SSL | SSL-Intercept |
| Перспектива | Факт наличия cert в handshake | CertificateRequest от сервера |
Это сознательное расхождение: для forward proxy presented= полезнее — позволяет строить политики на основе mTLS аутентификации клиента.
Примеры:
<SSL>
; Требовать клиентский сертификат для доступа к внутренним ресурсам
url.domain=internal.corp.com client.certificate.presented=no deny
; Логировать mTLS-аутентифицированные запросы
client.certificate.presented=yes log.enable("mtls")
; Bare keyword (без =yes)
client.certificate.presented allow
См. также: 15.6. client.certificate.subject.cn=, 15.7. client.certificate.subject.ou=
15.6. client.certificate.common_name=¶
Проверяет Common Name (CN) из поля Subject клиентского X.509 сертификата. Поддерживает wildcard-паттерны и два синтаксиса: =value и function-style ("value").
Синтаксис:
где pattern — строка с поддержкой wildcards (*, ?).
Допустимые слои: Proxy, SSL
Принимаемые имена (эквивалентны, одно условие TlsClientCertCn): client.certificate.common_name= — каноническое имя (как в BlueCoat); client.certificate.subject.cn= — алиас Redcoat (CN — часть Subject). Оба парсятся и ведут себя одинаково, в обоих синтаксисах (=value и function-style ("value")) — по принципу «выравниваем под 7.3 с алиасами». Wildcards поддерживаются через строковый матчер (*, ?); отдельные string-модификаторы (.exact/.prefix/.suffix/.substring/.regex) к CN не применяются.
| каноническое (BlueCoat) | алиас (Redcoat) | |
|---|---|---|
| Имя | client.certificate.common_name= |
client.certificate.subject.cn= |
| Function-style | client.certificate.common_name("value") |
client.certificate.subject.cn("value") |
| Wildcards | *, ? (строковый матчер) |
то же |
Примеры:
<SSL>
; Проверка CN клиентского сертификата (каноническое имя)
client.certificate.common_name=admin.corp.com allow
client.certificate.common_name=*.corp.com allow
; Алиас subject.cn — то же условие
client.certificate.subject.cn=service-account allow
; Function-style синтаксис
client.certificate.common_name("service-account") allow
; Запрет неизвестных сертификатов
client.certificate.presented=yes client.certificate.common_name=!*.corp.com deny
См. также: 15.5. client.certificate.presented=, 15.7. client.certificate.subject.ou=
15.7. client.certificate.subject.ou=¶
Проверяет Organizational Unit (OU) из поля Subject клиентского X.509 сертификата. Поддерживает wildcard-паттерны и два синтаксиса.
Синтаксис:
где pattern — строка с поддержкой wildcards (*, ?).
Допустимые слои: Proxy, SSL
Сравнение с BlueCoat: BlueCoat CPL Reference определяет client.certificate.subject_directory_attribute= для проверки произвольных атрибутов Subject. Redcoat предоставляет прямой доступ к OU как отдельное условие — это расширение Redcoat, не имеющее прямого аналога в BlueCoat. BlueCoat также предоставляет client.certificate.subject= для проверки всего Subject — в Redcoat не реализовано.
Примеры:
<SSL>
; Разрешить доступ только для определённых подразделений
client.certificate.subject.ou=Engineering allow
client.certificate.subject.ou=Security allow
client.certificate.presented=yes deny ; остальные сертификаты — запретить
; Wildcard
client.certificate.subject.ou=*-team allow
; Function-style
client.certificate.subject.ou("DevOps") allow
См. также: 15.5. client.certificate.presented=, 15.6. client.certificate.subject.cn=
15.8. ssl.proxy_mode=¶
Проверяет, выполняет ли прокси перехват и расшифровку SSL-соединения (по BlueCoat). Условие истинно, если текущий запрос обрабатывается на расшифрованном (перехваченном) SSL-соединении.
Синтаксис:
| Значение | Когда истинно (Redcoat) |
|---|---|
yes |
Запрос на перехваченном/расшифрованном SSL-соединении (forward или reverse) |
no |
Запрос НЕ на перехваченном SSL-соединении (обычный HTTP или сквозной TLS-туннель) |
https-forward-proxy |
Перехваченное SSL в режиме forward-proxy (is_ssl и НЕ reverse) |
https-reverse-proxy |
Соединение в режиме reverse-proxy |
Режим прокси задаётся слушателем
Режим (forward / reverse) определяется слушателем (ProxyMode), а не самим правилом.
Соответствие значений: yes истинно для любого перехваченного SSL — forward или reverse;
https-forward-proxy — только forward-перехват; https-reverse-proxy — соединение
в reverse-режиме; no — соединение без перехвата SSL. Принимаются только эти четыре
значения — значения inspection-режимов (deep-inspection и т.п.) для ssl.proxy_mode=
не допускаются (для них есть отдельное условие ssl.inspection_mode=).
Допустимые слои: <Proxy>, <SSL>.
Примеры:
<Proxy>
; Применить правило только к перехваченному (расшифрованному) SSL
ssl.proxy_mode=yes url.domain=*.internal.com allow
; Запретить обычные (не SSL-перехваченные) запросы к ресурсу
ssl.proxy_mode=no url.domain=secure.example.com deny
См. также: 15.14. ssl.intercepted=, 15.15. ssl.bypassed=
15.9. is_ssl=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга. Поле
is_sslзаполняется и используется внутренне для определения схемы (http/https) и порта по умолчанию (80/443).
Проверяет, является ли клиентское соединение TLS-защищённым.
Синтаксис (планируемый):
Допустимые слои: Proxy
Сериализация: Connection.IsSsl=yes|no
Примеры (планируемые):
<Proxy>
; Перенаправить HTTP на HTTPS
is_ssl=no redirect(301, "https://$(url.host)$(url.path)")
; Применить правила только к HTTPS
is_ssl=yes url.domain=sensitive.com allow
Примечание: В отличие от client.connection.negotiated_ssl_version=, которое проверяет конкретную версию TLS, is_ssl= — бинарная проверка наличия TLS-соединения.
См. также: 15.1. client.connection.negotiated_ssl_version=
15.10. tls.version=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Проверяет версию TLS-протокола клиентского соединения. Отличается от client.connection.negotiated_ssl_version= именем (упрощённое) и предполагаемым use case (Redcoat-native синтаксис).
Синтаксис (планируемый):
Допустимые значения: SSLv3, TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3
Допустимые слои: Proxy, SSL
Сериализация: tls.version=TLSv1.2 или tls.version=(TLSv1.2, TLSv1.3)
Примечание: Рекомендуется использовать реализованное условие client.connection.negotiated_ssl_version= (BlueCoat-совместимое). tls.version= будет добавлено как alias для удобства.
Примеры (планируемые):
<SSL>
; Запрет устаревших версий
tls.version=SSLv3 deny
tls.version=TLSv1.0 deny
tls.version=TLSv1.1 deny
См. также: 15.1. client.connection.negotiated_ssl_version=
15.11. tls.cipher_suite=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Проверяет набор шифров TLS-соединения клиента. Аналогично client.connection.negotiated_cipher= с упрощённым именем.
Синтаксис (планируемый):
Допустимые слои: Proxy, SSL
Примечание: Рекомендуется использовать реализованное условие client.connection.negotiated_cipher= (BlueCoat-совместимое).
Примеры (планируемые):
<SSL>
tls.cipher_suite=TLS_AES_256_GCM_SHA384 allow
tls.cipher_suite=(TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256) allow
См. также: 15.2. client.connection.negotiated_cipher=
15.12. tls.sni=¶
Проверяет имя сервера (hostname) из расширения SNI (Server Name Indication) в TLS ClientHello. Для HTTPS CONNECT запросов SNI извлекается из hostname CONNECT. Доступно до расшифровки TLS, поэтому может использоваться в слое <SSL-Intercept> для принятия решения о перехвате.
Синтаксис:
client.connection.ssl_server_name=hostname
client.connection.ssl_server_name.exact=hostname
client.connection.ssl_server_name.prefix=prefix
client.connection.ssl_server_name.suffix=.domain.com
client.connection.ssl_server_name.substring=pattern
client.connection.ssl_server_name.regex="regex_pattern"
Допустимые слои: Proxy, SSL, SSL-Intercept, Forward
Default match (без модификатора): domain suffix — client.connection.ssl_server_name=example.com матчит example.com, www.example.com, sub.example.com.
Совместимость с BlueCoat: Полная. Имя, синтаксис и string modifiers идентичны BlueCoat . Поддерживается также внутренний формат tls.sni= (legacy).
| Redcoat | BlueCoat | |
|---|---|---|
| Имя | client.connection.ssl_server_name= |
client.connection.ssl_server_name= |
| Default match | domain suffix | domain suffix |
| String modifiers | .exact, .prefix, .suffix, .substring, .regex | .exact, .prefix, .suffix, .substring, .regex |
| Слои | Proxy, SSL, SSL-Intercept, Forward | Proxy, SSL, SSL-Intercept, Forward, Tenant |
Примеры:
<SSL-Intercept>
; Не перехватывать банковские сайты
client.connection.ssl_server_name.suffix=.bank.com ssl.forward_proxy(no)
client.connection.ssl_server_name.suffix=.banking.org ssl.forward_proxy(no)
; Перехватывать всё остальное
ssl.forward_proxy(yes)
<Proxy>
; Блокировка по SNI (domain suffix match)
client.connection.ssl_server_name=blocked-site.com deny
; Блокировка по точному имени
client.connection.ssl_server_name.exact=evil.com deny
Сериализация: client.connection.ssl_server_name[.modifier]=pattern
См. также: 8. Условия URL, 28. SSL/TLS действия
15.13. tls.alpn=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Проверяет протокол, согласованный через TLS ALPN (Application-Layer Protocol Negotiation). ALPN определяет протокол верхнего уровня (HTTP/1.1, HTTP/2, HTTP/3) на этапе TLS handshake.
Синтаксис (планируемый):
Допустимые значения: h2 (HTTP/2), http/1.1 (HTTP/1.1), h3 (HTTP/3)
Допустимые слои: Proxy, SSL
Примеры (планируемые):
<SSL>
; Логировать HTTP/2 соединения
tls.alpn=h2 log.enable("http2")
; Разрешить только HTTP/1.1 и HTTP/2
tls.alpn=(h2, http/1.1) allow
Сериализация: tls.alpn=h2 или tls.alpn=(h2, http/1.1)
Примечание: В BlueCoat CPL Reference отсутствует прямой аналог tls.alpn=. Это расширение Redcoat.
15.14. ssl.intercepted=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Проверяет, был ли TLS-трафик перехвачен (расшифрован) прокси через MITM.
Синтаксис (планируемый):
Допустимые слои: Proxy, Exception
Примеры (планируемые):
<Proxy>
; Применить дополнительные правила к расшифрованному трафику
ssl.intercepted=yes url.domain=internal.com allow
<Exception>
; Особая страница ошибки для MITM-трафика
ssl.intercepted=yes exception.id=policy_denied exception(ssl_blocked_page)
Примечание: Связано с ssl.proxy_mode=, но проще — бинарная проверка факта перехвата.
См. также: 15.15. ssl.bypassed=, 15.8. ssl.proxy_mode=
15.15. ssl.bypassed=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Проверяет, был ли TLS-трафик пропущен без расшифровки (tunnel mode, bypass).
Синтаксис (планируемый):
Допустимые слои: Proxy, Exception
Примеры (планируемые):
<Proxy>
; Логировать пропущенный SSL-трафик
ssl.bypassed=yes log.enable("ssl_bypass")
; В tunnel mode — ограниченные возможности фильтрации
ssl.bypassed=yes url.domain=blocked.com deny
Примечание: ssl.bypassed=yes и ssl.intercepted=yes взаимоисключающи для одного соединения. Для нешифрованных (не-SSL) соединений оба значения no.
См. также: 15.14. ssl.intercepted=
15.16. ssl.inspection_mode=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Определяет режим инспекции SSL-трафика. Более детальная альтернатива бинарным ssl.intercepted= и ssl.bypassed=.
Синтаксис (планируемый):
| Значение | Алиасы | Описание |
|---|---|---|
deep-inspection |
deep, full, mitm |
Полная расшифровка и инспекция (MITM) |
certificate-inspection |
certificate, cert |
Проверка только серверного сертификата без расшифровки |
bypass |
none, passthrough |
Пропуск без инспекции |
block |
deny |
Блокировка SSL-соединения |
Допустимые слои: SSL-Intercept
Примеры (планируемые):
<SSL-Intercept>
; Полная инспекция для корпоративных ресурсов
url.domain=.corp.com ssl.inspection_mode=deep-inspection
; Только проверка сертификата для банков
url.domain=.bank.com ssl.inspection_mode=certificate-inspection
; Пропуск для доверенных ресурсов
url.domain=.trusted.com ssl.inspection_mode=bypass
Детали: Поддерживается 4 режима инспекции; для каждого допускается несколько алиасов. Режимом MITM (полной расшифровки) считается только deep-inspection.
См. также: 15.14. ssl.intercepted=, 28. SSL/TLS действия
15.17. tls.ech=¶
Статус: планируется. Использование в CPL файле приведёт к ошибке парсинга.
Проверяет наличие расширения Encrypted Client Hello (ECH) в TLS 1.3 ClientHello. ECH шифрует SNI и другие метаданные, скрывая их от промежуточных узлов.
Синтаксис (планируемый):
Допустимые слои: Proxy, SSL-Intercept
Примеры (планируемые):
<SSL-Intercept>
; Блокировать ECH — без SNI невозможна фильтрация
tls.ech=yes deny
<Proxy>
; Логировать ECH-соединения
tls.ech=yes log.enable("ech_detected")
Примечание: В BlueCoat CPL Reference отсутствует аналог tls.ech=. Это расширение Redcoat для работы с TLS 1.3 Encrypted Client Hello (draft-ietf-tls-esni). При tls.ech=yes значение tls.sni= может быть недоступно или содержать «внешний» (public) SNI вместо реального.
15.18. Условия серверного сертификата (server.certificate.*)¶
Статус: планируется. Все три условия принимаются при загрузке политики (имена как в BlueCoat), но проверка сертификата upstream-сервера ещё не реализована — правило с этими условиями не сработает.
Группа условий для проверки X.509-сертификата upstream-сервера. По замыслу доступны только при TLS-инспекции (MITM), когда прокси сам устанавливает TLS-соединение с сервером.
server.certificate.hostname=шаблон ; имя хоста сертификата
server.certificate.hostname.category=(кат.) ; категория имени хоста
server.certificate.subject=DN ; всё поле Subject
Планируемое сокращение Redcoat
tls.server_cert.cn=(CN из Subject) пока также не реализовано.
где pattern — строка с поддержкой wildcards.
Допустимые слои: SSL, SSL-Intercept
Сравнение с BlueCoat: В BlueCoat CPL Reference аналогичное условие называется server.certificate.subject= и проверяет всё поле Subject (не только CN). BlueCoat поддерживает string modifiers (.exact, .prefix, .suffix, .substring, .regex) и .case_sensitive.
| Redcoat | BlueCoat | |
|---|---|---|
| Имя | tls.server_cert.cn= |
server.certificate.subject= |
| Что проверяет | Только CN | Всё поле Subject |
| Слои | SSL, SSL-Intercept | SSL, SSL-Intercept |
Примеры (планируемые):
<SSL>
; Проверка CN серверного сертификата
tls.server_cert.cn=*.google.com allow
tls.server_cert.cn=*.phishing-site.com deny
Примечание: Серверный сертификат доступен только после установления TLS-соединения с сервером, поэтому условие проверяется на этапе обработки ответа.
Сериализация: tls.server_cert.cn=pattern
См. также: 15.6. client.certificate.subject.cn=
Сводная таблица условий SSL/TLS¶
| # | Условие | Статус | BlueCoat аналог |
|---|---|---|---|
| 15.1 | client.connection.negotiated_ssl_version= |
реализовано | идентичен |
| 15.2 | client.connection.negotiated_cipher= |
реализовано | идентичен |
| 15.3 | server.connection.negotiated_ssl_version= |
реализовано | идентичен |
| 15.4 | server.connection.negotiated_cipher= |
реализовано | идентичен |
| 15.5 | client.certificate.presented= |
реализовано | client.certificate.requested= (другая семантика) |
| 15.6 | client.certificate.subject.cn= |
реализовано | client.certificate.common_name= |
| 15.7 | client.certificate.subject.ou= |
реализовано | расширение Redcoat |
| 15.8 | ssl.proxy_mode= |
планируется | ssl.proxy_mode= |
| 15.9 | is_ssl= |
планируется | нет прямого аналога |
| 15.10 | tls.version= |
планируется | alias для 15.1 |
| 15.11 | tls.cipher_suite= |
планируется | alias для 15.2 |
| 15.12 | client.connection.ssl_server_name= |
реализовано | client.connection.ssl_server_name= (полная совместимость, все string modifiers) |
| 15.13 | tls.alpn= |
планируется | расширение Redcoat |
| 15.14 | ssl.intercepted= |
планируется | нет прямого аналога |
| 15.15 | ssl.bypassed= |
планируется | нет прямого аналога |
| 15.16 | ssl.inspection_mode= |
планируется | нет прямого аналога |
| 15.17 | tls.ech= |
планируется | расширение Redcoat |
| 15.18 | tls.server_cert.cn= |
планируется | server.certificate.subject= |
15.19. client.connection.authenticated=¶
Синтаксис и семантика — как в BlueCoat.
Истинно, если на клиентском соединении учётные данные realm были проверены в предыдущей транзакции (соединение уже аутентифицировано). Как и authenticated=, не может сочетаться со свойством authenticate() в одном правиле.
Синтаксис:
Допустимые слои: <Proxy>.
Примеры:
15.20. client.connection.dscp=¶
Статус: планируется. DSCP-метка из входящего соединения пока не читается, поэтому значение всегда отсутствует и условие никогда не срабатывает (безопасно). Будет добавлено позже.
Проверяет DSCP-метку (Differentiated Services Code Point, QoS) клиентского соединения. DSCP — 6-битное значение (0–63) в IP-заголовке для приоритизации трафика.
Синтаксис:
Допустимые слои: <Proxy>.
Примеры:
15.21. client.connection.realm=¶
Статус: планируется. Realm соединения пока не передаётся из аутентификации, поэтому условие никогда не срабатывает (безопасно). Будет добавлено позже.
Истинно, если клиентское соединение уже аутентифицировано в указанном realm в предыдущей транзакции.
Синтаксис:
client.connection.realm=<realm_name>
client.connection.realm.exact=<realm_name>
client.connection.realm.prefix=<prefix>
client.connection.realm.suffix=<suffix>
client.connection.realm.substring=<substring>
client.connection.realm.regex=<regex>
Поддерживаются стандартные формы сравнения строки: точное (= / .exact), по префиксу/суффиксу/подстроке и по регулярному выражению.
Допустимые слои: <Proxy>.
Примеры:
15.22. client.connection.ssl_server_name.exists=¶
Синтаксис и семантика — как в BlueCoat.
Истинно, если в TLS-рукопожатии клиента присутствует SNI (Server Name Indication).
Синтаксис:
Допустимые слои: <Proxy>, <SSL>.
Примеры:
15.23. client.connection.ssl_server_name.length=¶
Синтаксис и семантика — как в BlueCoat.
Проверяет длину значения SNI (в символах) в TLS-рукопожатии клиента. Используется для отсева аномально длинных SNI.
Синтаксис:
Допустимые слои: <Proxy>, <SSL>.
Примеры: