From d6824f131541c20db129975e3bba414d5c17b466 Mon Sep 17 00:00:00 2001 From: iambabyninja Date: Sat, 10 Jan 2026 16:00:52 +0500 Subject: [PATCH] RU TLS: Add pinnedPeerCertSha256 --- docs/ru/config/transport.md | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/docs/ru/config/transport.md b/docs/ru/config/transport.md index d5685df2..76fcf655 100644 --- a/docs/ru/config/transport.md +++ b/docs/ru/config/transport.md @@ -117,7 +117,7 @@ Reality — это самое безопасное на данный момен "disableSystemRoot": false, "enableSessionResumption": false, "fingerprint": "chrome", - "pinnedPeerCertificateChainSha256": [""], + "pinnedPeerCertSha256": "", "curvePreferences": [""], "masterKeyLog": "", "echConfigList": "", @@ -240,24 +240,19 @@ Reality — это самое безопасное на данный момен ::: tip При использовании этой функции некоторые параметры TLS, влияющие на отпечаток TLS, будут переопределены библиотекой utls и не будут действовать, например, ALPN. Передаваемые параметры: -`"serverName" "allowInsecure" "disableSystemRoot" "pinnedPeerCertificateChainSha256" "masterKeyLog"` +`"serverName" "allowInsecure" "disableSystemRoot" "pinnedPeerCertSha256" "masterKeyLog"` ::: -> `pinnedPeerCertificateChainSha256`: \[string\] +> `pinnedPeerCertSha256`: string -Используется для указания хэша SHA256 цепочки сертификатов удаленного сервера с использованием стандартного формата кодировки. Соединение TLS может быть успешно установлено только в том случае, если хэш цепочки сертификатов сервера соответствует одному из значений, указанных в настройке. +Используется для указания хеш-суммы SHA256 сертификата удаленного сервера; формат hex, регистр не учитывается. Например: `e8e2d387fdbffeb38e9c9065cf30a97ee23c0e3d32ee6f78ffae40966befccc9`. Эта кодировка совпадает с отпечатком сертификата SHA-256 в просмотрщике сертификатов Chrome, а также с форматом Certificate Fingerprints SHA-256 на crt.sh. Также для вычисления можно использовать команду `xray tls leafCertHash --cert `. Можно использовать символ `-` для объединения нескольких хеш-значений; проверка считается пройденной при совпадении с любым из них. -Если соединение не удалось установить из-за этой конфигурации, будет отображен хэш сертификата удаленного сервера. +Эта проверка выполняется только после успешного завершения стандартной проверки сертификата и делится на два случая: -**Примечание:** Проверка будет выполняться только после успешной проверки сертификата на действительность. Например, если используется самоподписанный сертификат и он указан здесь, то при неудачной проверке сертификата ядро сразу разорвет соединение и не будет выполнять эту проверку. В подобных случаях можно рассмотреть включение параметра `allowInsecure`, чтобы пропустить проверку подписи, что позволит системе работать корректно. +- 1. Когда ядро обнаруживает, что совпадающий хеш принадлежит конечному (leaf) сертификату, проверка проходит сразу. +- 2. Когда ядро обнаруживает, что совпадающее значение принадлежит сертификату CA (это может быть корневой или промежуточный сертификат), проверяется, действительно ли подпись на конечном сертификате авторизована этим CA. -::: danger -Не рекомендуется использовать этот способ для получения хэша цепочки сертификатов, так как в этом случае не будет возможности проверить, является ли сертификат, предоставленный сервером в данный момент, подлинным, и, следовательно, не гарантируется, что полученный хэш сертификата является ожидаемым. -::: - -::: tip -Если вам нужно получить хэш сертификата, запустите `xray tls certChainHash --cert ` из командной строки, где `` следует заменить на фактический путь к файлу сертификата. -::: +Перед этой проверкой сначала выполняется стандартная проверка сертификата, поэтому для самоподписанных сертификатов можно рассмотреть возможность включения `allowInsecure` с настройкой хеша здесь, а для самоподписанных CA можно закрепить (pin) CA здесь и настроить `verifyPeerCertInNames` (сертификат CA, используемый в процессе его проверки, будет заменен сертификатом CA, найденным здесь). > `certificates`: \[ [CertificateObject](#certificateobject) \]