Рейтинг:0

Dovecot не может прочитать сертификат TLS

флаг ke

В моей системе CentOS 7 я пытаюсь запустить dovecot с обязательным TLS. Для этого я создал свой закрытый ключ и сертификат в

[root@homeserver /]# ls -lZ indernet/cert/homeserver.*
-р--р--р--. root certuser system_u:object_r:default_t:s0 indernet/cert/homeserver.crt
-р--р-----. root certuser system_u:object_r:default_t:s0 indernet/cert/homeserver.key
[root@homeserver /]#

Чтобы dovecot действительно загружал файлы, я убедился, что /etc/dovecot/conf.d/10-ssl.conf содержит следующие строки:

SSL = требуется
ssl_key=</indernet/cert/homeserver.key
ssl_cert=</indernet/cert/homeserver.crt

Проблемная часть: Dovecot не запускается, вылетает с этой ошибкой:

dovecot: doveconf: Fatal: ошибка в файле конфигурации /etc/dovecot/conf.d/10-ssl.conf, строка 14: ssl_key: не удается открыть файл /indernet/cert/homeserver.key: в доступе отказано

Я попытался изменить права доступа к файлу сертификата и ключа (это не должно требоваться в соответствии с https://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/), даже на 777 и ничего не меняется. Кто-то предположил, что SELinux блокирует доступ, и я настроил unconfined_u:object_r:default_t:s0, а также system_u:object_r:default_t:s0, как вы можете видеть выше. Без изменений.

Теперь удивительная часть: мне стало очень любопытно, и я отредактировал /usr/lib/systemd/system/dovecot.service, чтобы он содержал

ExecStart=/bin/strace /usr/sbin/dovecot

а затем в /var/log/messages я мог видеть, что сертификат и ключ получают доступ и загружаются. И голубятня работает. Но когда я снова удаляю strace, у меня остается та же проблема.

Что здесь может происходить?

флаг in
У вас включен AppArmor? Это также может вызвать этот тип проблемы.
Hiran Chaudhuri avatar
флаг ke
У меня включен SELinux. AFAIK apparmor предназначен для систем Debian?
Рейтинг:3
флаг cz

Ключи не могут быть прочитаны, потому что SELinux запретил доступ к ним.

Решить проблему, копировать (с использованием ср или же мв -Z) ключи в каталог, где SELinux ожидает хранения ключей и сертификатов TLS, т.е. /etc/pki/TLS и его подкаталоги. Новые файлы будут иметь правильные контексты SELinux, если вы использовали ср или же мв -Z. Затем обновите расположение файлов в конфигурации Dovecot.

Hiran Chaudhuri avatar
флаг ke
Решение действительно сработало. Но как получается, что strace может обойти SELinux?
Michael Hampton avatar
флаг cz
@HiranChaudhuri SELinux позволяет strace делать практически все.
Hiran Chaudhuri avatar
флаг ke
Это звучит странно, так как другие даже используют strace для устранения проблем с разрешениями (https://subscription.packtpub.com/book/networking_and_servers/9781783989669/8/ch08lvl1sec75/using-strace-to-clarify-permission-issues). Есть ли где-то больше информации об этом?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.