
На моей системе CentOS 7 я пытаюсь запустить dovecot с TLS. Для этого я создал свой закрытый ключ и сертификат в
[root@homeserver /]# ls -lZ indernet/cert/homeserver.*
-r--r--r--. root certuser system_u:object_r:default_t:s0 indernet/cert/homeserver.crt
-r--r-----. root certuser system_u:object_r:default_t:s0 indernet/cert/homeserver.key
[root@homeserver /]#
Чтобы dovecot действительно загрузил файлы, я убедился, что /etc/dovecot/conf.d/10-ssl.conf содержит следующие строки:
ssl=required
ssl_key=</indernet/cert/homeserver.key
ssl_cert=</indernet/cert/homeserver.crt
Проблемная часть: Dovecot не может запуститься, возникает эта ошибка:
dovecot: doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-ssl.conf line 14: ssl_key: Can't open file /indernet/cert/homeserver.key: Permission denied
Я попытался изменить права доступа к файлам сертификата и ключа (согласно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 я мог видеть, что сертификат и ключ были доступны и загружены. И dovecot работает. Но когда я снова удаляю strace, у меня остается та же проблема.
Что здесь может происходить?
решение1
Ключи не могут быть прочитаны, поскольку SELinux запретил доступ к ним.
Решить проблему,копия(используя cp
или mv -Z
) ключи к каталогу, где SELinux ожидает хранения ключей и сертификатов TLS, т. е. /etc/pki/tls
и его подкаталогам. Новые файлы будут иметь правильные контексты SELinux, если вы использовали cp
или mv -Z
. Затем обновите расположение файлов в вашей конфигурации Dovecot.