Какой рейтинг вас больше интересует?
|
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 comments
|
Категория «Бизнес»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.