[Tartarus] Портирование tartarus на Debian

Evgeny Sinelnikov =?iso-8859-1?q?sin_=CE=C1_etersoft=2Eru?=
Чт Июн 11 16:35:50 MSD 2009


11 июня 2009 г. 15:33 пользователь Boris Savelev <boris на etersoft.ru> написал:
> 11 июня 2009 г. 15:19 пользователь Evgeny Sinelnikov (sin на etersoft.ru) написал:
>> 11 июня 2009 г. 14:33 пользователь Boris Savelev <boris на etersoft.ru> написал:
>>>>> В Ubuntu (8.10,9.04) тоже самое.
>>>>> Расскажи как эта проблема решилась для 4.1. Вы собрали только
>>>>> libssl+libcrypto+dev или же там полноценный форк openssl?
>>>>
>>>> Всё просто - достаточно добавить ключ сборки with-krb5-flavor=MIT. У
>>>> нас это выглядит так:
>>>> ./Configure shared -DSSL_ALLOW_ADH --prefix=%prefix \
>>>>    openssldir=%openssldir \
>>>>    enginesdir=%_libdir/openssl/engines \
>>>> %if_with krb
>>>>    with-krb5-flavor=MIT \
>>>>    with-krb5-dir=%prefix \
>>>> %endif
>>>>    #
>>>>
>>>>> Как решать вопрос с конфликтами?
>>>>
>>>> Конфликтов быть не должно. Откуда им взяться... Будет дополнительная
>>>> зависимость у libssl на libkrb5, причём циклическая, ибо pkinit в krb5
>>>> использует libcrypto. Для решения этой проблемы libcrypto у нас
>>>> вынесен из libssl в отдельный подпакет.
>>>>
>>>
>>> Стоп-) в 4.1 пакеты собраны с libssl без kerberos. если им просто
>>> подложить libssl с krb5 то они скорее всего упадут, т.к. ABI у них
>>> получается действительно разный. Стало быть появляется пакет с libssl
>>> собранный с krb5 с либой с другим soname нежели изначально был у
>>> libssl в 4.1. Кроме этого появляется явный конфликт по devel пакетам у
>>> новой libssl c krb5 и старой libssl. Да? Или нет?-)
>>
>> Нет. Всё не так.
>>
>> Мы не собираем новую версию libssl7, как раньше... ABI не меняется. Мы
>> пересобирем libssl6 с дополнительной опцией. С чего, при этом ABI,
>> должно поменяться? В чём должен отличаться ABI в сборках libssl с
>> kerberos от libssl без kerberos?
>
> Хохо. И оно так работает? При сборке с krb5 меняются структуры.

Вот так вот... А ведь даже работает ;)

> например -- http://git.altlinux.org/people/sin/packages/?p=openssl.git;a=blob;f=openssl/ssl/ssl.h;h=ff8a128d3c2d76df900faf9fd07af47df4e201b4;hb=HEAD#l420
> я не силен в С, но думаю это изменение ABI важнее добавившихся функций.
>

Выглядит это жутко, и на ABI, конечно, влияет. Всё вывалится на
доступе к данным этой структуры ssl_session_st. Клиентам хоть и
возвращается ссылка, а число полей роль уже другое, а соответственно и
смещения другие.

Проблема появится и при обратной ситуации, когда клиент попытается
обратиться к полям это структуры...

Как я это умудрился просмотреть... :(

> Не думаю что все приложения с честью это перенесут и не упадут... даже

Ну, не все и не сразу... В общем, да... нужна полная пересборка...
Альты и федора для этого готовы... Для Debian, придётся писать модуль
krb для Ice. Давно пора... Боюсь с openssl там нам быстро не
пробиться...

> если это и так, такая халява в дебиане вряд ли пройдет. придется

Ну, да... тут доказывать что-то сложно и вряд ли нужно... Проще модуль
всё-таки начать писать...

> потратить значительное время чтобы убедить что это действительно
> никого не коснется.

Это сложный процесс... Я его уже один раз проходил...

Итого, пока не будет готов модуль krb для Ice в Ubuntu и Debian можно
не соваться... Но можно попытаться как-то форсировать включение опции
KRB5 для openssl, но это, я думаю, сложнее, чем модуль написать... Да
и пользы от модуля больше будет.

-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Tartarus