[personal profile] klink0v

... Попался мне тут в поле зрения один сильно китайский девайс. Не суть важно что он из себя представляет, главное знать что унутри у него неонка зашит некий X509-сертификат. Который оная вундервафля использует в качестве клиентского для реализации некоего аналога mTLS при обмене данными с сервером через эти наши интернеты.

Пресловутый клиентский сертификат является третьим в цепочке. Он подписан неким китайским же промежуточным сертификатом. А промежуточный, как водится, восходит к рутовому, которому доверяют сервера всей этой инфраструктуры. Всё "по классике". Вроде бы. Но есть нюанс. ©

Не знаю каким раком, но китайтсы умудрились сгенерировать вот этот "конечный" клиентский (leaf) сертификат так, что у него перепутан порядок полей в ASN.1-множестве "Issuer". То есть все по отдельности они совпадают с одноименными подразделами "Subject" родительского сертификата, но если конкатенировать (собрать, сериализовать) их в строки, то Subject и Issuer будут отличаться как раз по причине того самого "разнобоя". И да, поля AKI / SKI тем не менее у них совпадают, так что именно по этому отдельно взятому критерию проверка валидности проходит.

Как следствие, сервера разделились на две группы: одни пропускают и хавают эту смешную китайскую самодеятельность, а другие отбивают с мотивацией "вы чо тут мне ваще такое прислали". При этом ко второй категории "отбивающих" относятся в том числе и Javaписьные реализации, известные своей мягкостью / халатностью / пофигизмом при проведении проверок такого плана. А вот кем и на чём написаны одобряющие и поощряющие такое поведение серверные приложения, для меня остаётся загадкой. Потому что тот же Python выдвигает куда более строгие требования к X509-сертификатам если речь идёт о его стандартных библиотеках.

Вишенка же на торте заключается в том, что в качестве "третейского судьи" использовать уважаемый всеми OpenSSL не получится. Потому что в энтих всех мЫханизЬмах используется некая спецификация "SGP.22" имени GSMA (кому интересно, можете погуглить что это), которая идет вразрез с IETF-ом и его RFC 5280. И GSMA с**ть (плевать) хотела на IETF, так что полностью переопределила порядок работы X509v3-расширения "X509v3 Name Constraints". Поэтому "openssl verify" здесь вообще ни разу не помощник, ибо он сразу без разговоров отшивает все такие сертификаты по причине несоответствия тех самых Constraints, в то время как по мнению GSMA они вполне себе корректные.

В общем, клиенты катят на нас бочку, мол, мы козлы, поскольку отбиваем подобные китайские вундервафли с их странными сертификатами. Мы отвечаем, что это китайцы рукожопые, все вопросы к ним. Клиенты не верят. А я пошёл гуглить действительно ли порядок полей в Subject / Issuer должен учитываться при проверке сертификата (trust path). И нужно ли вообще их проверять если уже понятно что AKI / SKI совпали. И таки знаете что? Я не нашёл прям вот однозначного ответа на свой вопрос. Такого, чтобы прям вот американским по белому был бы прописан в каком-нибудь IETF RFC, на который можно железобетонно сослаться.

Да, есть последний абзац раздела 7.1 в RFC 5280 про совпадение DN-ов (Distinguished Names). Но можно ли его "притянуть за уши" в контекст сравнения Subject-Issuer лично мне не вполне очевидно. И повторюсь, так же неочевидно, а обязательно ли вообще проверять Subject-Issuer при совпадении AKI-SKI (Authority Key Identifier — Subject Key Identifier).

Чувствую, такими темпами придется потрошить исходные коды библиотеки OpenSSL чтобы понять что на этот счёт думают её разработчики. Где бы только взять на это время и силы.

А какие есть у вас мысли по этому поводу? Только пожалуйста не ссылки на StackOverflow, там везде я уже был. И не выхлоп чат-гопоты. А цитаты конкретных норм из конкретных IETF RFC.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

Sergeich

February 2026

S M T W T F S
123456 7
8910 11121314
1516 1718 1920 21
22232425 262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 27th, 2026 03:54 pm
Powered by Dreamwidth Studios