vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Провел тут небольшое исследование того, как openssl (в смысле утилита командной строки, в библиотеке-то еще десять лет назад все хорошо было) относится к русским буквам в Distinguished name сертификатов.

1. У команд. в которых может потребоваться вводить поля distinguished name (req и ca) есть опция -utf8, позволяющая нормально вводить с консоли текст в utf8. У req можно еще в конфиге написать utf8=yes

2. У команд req и x509 есть опция -nameopt, позволяющая задать опции отображения строк.
Если указать -nameopt utf8, то утилита радостно завершится без всякой диагностики при первой же попытке вывести distinguished name. Надо сказать -nameopt sep_comma_plus,utf8. (ну или какой другой sep их есть 4 варианта, но ни один из них не умолчательный).

3. На отображение расширения X509 Authority Key Identifier эта опция не влияет, равно как и на все прочие расширения.

4. У команды ca и такой опции нет (зато есть параметр name_opt в конфиге с совершенно другой с той же семантикой).

5. У команды crl опция -nameopt есть, но влияет только на работу опции -issuer и игнорируется при -text. У функции X509_CRL_print нет аналога X509_CRL_print_ex, позволяющего передать флаги отображения строк.

6. Кроме этого в командах s_client, s_server и ts используется функция X509_NAME_oneline, принципиально нелокализуемая, а в командах nseq, pkcs12 и pkcs7 - dump_cert_text, которая в свою очередь использует X509_NAME_oneline. Правда, она в принципе пишет не на консоль, а в какой-нибудь файл.

7. Принципиально нелокализуемая функция X509_print (которая не ex) используется в командах ca, pkcs7, sess_id и s_server

8. Команды ca и x509 (с опцией -x509toreq) используют X509_REQ_print без ex

И это все про 1.0.1i

Надо бы из этого багрепорт сделать. Но сначала надо понять, как выглядит правильное поведение.

Пока идеи следующие:
1. Предусмотреть у X509_NAME_print_ex умолчательный разделитель полей, чтобы -nameopt utf8 или name_opt=utf8 выводила нечто осмысленное. (однострочный патч)

2. Научить ca и x509 всегда использовать _ex-функции и всегда передавать в них nameopt, раз уж они умеют его откуда-то брать. Там тоже патчи тривиальные, но просто мест много.

3. Для консистентности приделать req name_opt в конфиг, а ca - -nameopt в командную строку. Опять же тривиальный патч.

4. Приделать X509_CRL_print_ex и использовать его в команде crl. Тривиально, но изменение public API, правда, не нарушающее обратную совместимость.

5. Вот что делать с pkcs7, pkcs12, s_client и s_server? Ко всем прикрутить -nameopt (благо парсинг соответсвующего параметра все равно в apps.c)?

6. А с расширениями вообще труба. Там такое количество indirection levels, что даже из X509_print_ex фиг передашь нужный флаг куда надо.

Date: 2014-10-03 09:15 am (UTC)
From: [identity profile] alexkuklin.livejournal.com
завершитЬся?

Date: 2014-10-03 06:07 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
О, товарищи по несчастью.

Я больше по managed коду, сишарп там всякий, джаваскрипт, но проблемы те же :)

Date: 2014-10-04 08:04 am (UTC)
From: [identity profile] anonim-legion.livejournal.com
А как это в сишарпе можно написать программу, которая будет портить юникод? В смысле, если не прилагать особенных усилий.

Про багрепорт

Date: 2014-10-05 08:36 am (UTC)
From: [identity profile] beldmit.livejournal.com
По п.1 можешь заслать однострочник? По прочим пунктам надо разбираться более вдумчиво.

Re: Про багрепорт

Date: 2014-10-05 09:25 am (UTC)
From: [identity profile] beldmit.livejournal.com
Это не багрепорт, это патч :-)

Re: Про багрепорт

Date: 2014-10-05 02:59 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Я бы это дело прямо сейчас заслал бы в трекер с указанием твоего авторства.

Дополнение

Date: 2015-02-13 08:23 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Команда verify при каких-то проблемах выводит сабжект сертификата с опциями по умолчанию. Ключ -nameopt я туда в меру ума и фантазии спортировал из x509, см. RT#3702

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2017

S M T W T F S
     123
4 5 6 7 89 10
1112 1314 15 1617
18 19 20 2122 2324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 26th, 2017 08:33 am
Powered by Dreamwidth Studios