Я использую Cyrus в системе Debian 7. Я хочу повысить безопасность, разрешив только определенным службам доступ к закрытым ключам SSL.
Я создал группу «ssl», в которую входят пользователи mysql, postfix и cyrus.
Кажется, что процесс cyrus запускается от имени пользователя cyrus:
$ ps aux | grep cyrus
cyrus 1294 0.0 0.0 126256 8112 ? S 16:23 0:00 imapd -s -U 30
cyrus 1695 0.0 0.0 57036 3544 ? Ss Nov20 0:03 /usr/sbin/cyrmaster -d
cyrus 3656 0.0 0.0 83708 2408 ? S Nov20 0:00 notifyd
root 10779 0.0 0.0 11540 892 pts/1 S+ 21:12 0:00 grep cyrus
В private.key есть chmod 640 и chown root: ssl. Он не зашифрован.
Certificate.pem имеет chmod 640 и chown root: root.
Когда запускается su cyrus
, Я могу прочитать файл private.key, поэтому с разрешениями все в порядке.
Когда я пытаюсь использовать свой почтовый ящик IMAP, cyrus сообщает, что у него нет доступа к закрытому ключу:
$tail /var/log/syslog
Nov 21 20:13:47 debian cyrus/imaps[20647]: unable to get private key from '/daten/ssl/xxx/private.key'
Nov 21 20:13:47 debian cyrus/imaps[20647]: TLS server engine: cannot load cert/key data, may be a cert/key mismatch?
Nov 21 20:13:47 debian cyrus/imaps[20647]: error initializing TLS
Nov 21 20:13:47 debian cyrus/imaps[20647]: Fatal error: tls_init() failed
Соответствующая часть /etc/imapd.conf:
tls_cert_file: /daten/ssl/xxx/certificate.pem
tls_key_file: /daten/ssl/xxx/private.key
tls_ca_file: /daten/ssl/ca/startcom/startcom.sub.class1.server.ca.crt
tls_ca_path: /daten/ssl/ca/startcom
Когда я изменяю chmod private.key обратно на 644, он работает. Установив его на 640, он больше не работает.
Что я могу сделать, чтобы Сайрус заработал? Почему процесс, запущенный как cyrus, не получает доступа к private.key?