Bug 29984 - стартовый скрипт cyrus-imap всегда перезаписывает ключи SSL
Summary: стартовый скрипт cyrus-imap всегда перезаписывает ключи SSL
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: cyrus-imapd (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Sergey Y. Afonin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-04-10 11:44 MSK by Стас
Modified: 2015-07-11 02:28 MSK (History)
3 users (show)

See Also:


Attachments
Патч - добавление проверки на наличие файлов ключа и сертификата (707 bytes, text/plain)
2014-04-10 11:44 MSK, Стас
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Стас 2014-04-10 11:44:39 MSK
Created attachment 6080 [details]
Патч - добавление проверки на наличие файлов ключа и сертификата

В /etc/init.d/cyrus-imapd есть такой код:

start() {
    is_yes "$NETWORKING" || return 0

    ssl_generate "cyrus"
    cp -f "$SSL_CERTDIR"/cyrus.cert /var/lib/imap/ssl/
    cp -f "$SSL_KEYDIR"/cyrus.key /var/lib/imap/ssl/
    chmod 0640 /var/lib/imap/ssl/cyrus.{cert,key}
    chown root:cyrus /var/lib/imap/ssl/cyrus.{cert,key}
    find -L "$SSL_CERTDIR" -type l -delete

    start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user cyrus -- \
    cyrus-master "$CYRUSOPTIONS"
    RETVAL=$?
    return $RETVAL
}

Патч прилагаю.
Comment 1 Andrey Cherepanov 2014-04-10 15:34:20 MSK
На Sisyphus.
Comment 2 Sergey Y. Afonin 2014-04-11 17:54:56 MSK
Столько лет использую, а в init-скрипт не смотрел ни разу... Вопрос, а это копирование требуется вообще тут ? Может, вынести в какой-нибудь updatecert ?
Comment 3 Sergey Y. Afonin 2014-04-14 14:49:11 MSK
Как раз сейчас настраиваю сервер в очередной раз:

Первый запуск:
# service cyrus-imapd restart
Service cyrus-master is not running.          [PASSED]
Generating cyrus SSL private key:             [ DONE ]
Generating cyrus SSL certificate request:     [ DONE ]
Generating cyrus SSL self-signed certificate: [ DONE ]
Generating cyrus SSL PEM certificate:         [ DONE ]
Starting cyrus-master service:                [ DONE ]

Второй запуск:
# service cyrus-imapd start
Starting cyrus-master service:                [ DONE ]

То есть, они копируются, но одни и те же. Сдаётся мне, что тут задумка была у vvk@ (commit d6980a67e42316b8433a60ae9994a522919a4aff) в том, чтобы сертификаты были скопированы в случае их обновления. Чем мешает копирование в момент рестарта ? Или у Вас сертификаты не лежат в общем хранилище дистрибутива (/var/lib/ssl) ?
Comment 4 Стас 2014-04-14 23:58:23 MSK
Да, свои серверные сертификат и ключ не стал складывать в /var/lib/ssl Я просто сделал линки на сертификаты, которые положил к себе в домашний каталог (с нужными правами), но это уже несущественно.
Я не понимаю, зачем при каждом запуске писать одно и то же в фаловую систему, которая вполне может быть и на флешке или SSD. Если необходимо копировать новые сертификаты, достаточно проверить время создания файлов (образцового и рабочего), это можно следать командой make. при большом желании можно и CRС сравнивать
Comment 5 Sergey Y. Afonin 2014-04-15 09:28:42 MSK
(In reply to comment #4)

> Я не понимаю, зачем при каждом запуске писать одно и то же в фаловую систему,
> которая вполне может быть и на флешке или SSD.

И что ? Во-первых, у современных флешек и, тем более, SSD достаточно большой ресурс. Во-вторых, cyrus-imapd должен работать - это же сервер, в конце концов. Если он перезапускается хотябы раз в сутки (а это всего 365 перезаписей в год), это уже безобразие какое-то.

Кроме того, в /var/lib/imap/ существуют вообще постоянно меняющиеся данные, например, deliver.db, /var/lib/imap/db/*, /var/lib/imap/lock/*. Тут нет никакого сравнения по частоте перезаписи с копированием ключей. Таким образом, про флешку - не аргумент.

> Если необходимо копировать новые сертификаты, достаточно проверить

Лишний ненужный код. Единственное, что стоит обсуждать, это вариант, когда сертификаты не хранятся в /var/lib/ssl. Хорошо это, или плохо, пока не знаю. Но можно завести какой-нибудь флаг, а-ля AUTO_COPY_CERT (или USE_SYSTEM_CERT), в sysconfig/cyrus-imapd, и проверять его в скрипте.
Comment 6 Repository Robot 2015-07-11 02:24:51 MSK
cyrus-imapd-2.4.18-alt1 -> sisyphus:

* Fri Jul 10 2015 Sergey Y. Afonin <asy@altlinux> 2.4.18-alt1
- 2.4.18
- added lsb init header
- added ability to disable copying of certificates in init script
  (Closes: #29984)
Comment 7 Sergey Y. Afonin 2015-07-11 02:28:34 MSK
"Ручка" для отключения лежит в /etc/sysconfig/cyrus-imapd