Сегодня 4 декабря, среда ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7276
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Журнал Витуса.
Журнал Витуса.
Голосов: 2
Адрес блога: http://vitus-wagner.livejournal.com/
Добавлен: 2008-02-19 12:48:41 блограйдером Lurk
 

OpenSSL, сертификаты и юникод

2014-10-03 13:04:51 (читать в оригинале)

Провел тут небольшое исследование того, как 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 фиг передашь нужный флаг куда надо.
http://vitus-wagner.dreamwidth.org/1017161.html. Please comment there using OpenID. Now there are comment count unavailable comments

Тэги: open, source, криптография

 


Самый-самый блог
Блогер Рыбалка
Рыбалка
по среднему баллу (5.00) в категории «Спорт»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.