
En mi sistema CentOS 7, estoy intentando ejecutar dovecot con TLS requerido. Para eso, creé mi clave privada y mi certificado en
[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 /]#
Para que dovecot realmente cargue los archivos, me aseguré de que /etc/dovecot/conf.d/10-ssl.conf contenga estas líneas:
ssl=required
ssl_key=</indernet/cert/homeserver.key
ssl_cert=</indernet/cert/homeserver.crt
La parte problemática: Dovecot no puede iniciarse, falla con este error:
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
Intenté modificar los permisos de archivo del certificado y de la clave (esto no debería ser necesario segúnhttps://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/), incluso a 777 y nada cambia. Alguien me sugirió que podría ser SELinux lo que impide el acceso y configuré unconfined_u:object_r:default_t:s0 así como system_u:object_r:default_t:s0 como puedes ver arriba. Ningún cambio.
Ahora la parte sorprendente: Sentí mucha curiosidad y edité /usr/lib/systemd/system/dovecot.service para contener
ExecStart=/bin/strace /usr/sbin/dovecot
y luego en /var/log/messages pude ver que se accedía y cargaba el certificado y la clave. Y el palomar funciona. Pero cuando vuelvo a quitar el rastro, me quedo con el mismo problema.
¿Qué puede estar pasando aquí?
Respuesta1
Las claves no se pueden leer porque SELinux ha negado el acceso a ellas.
Para solucionar el problema,Copiar(usando cp
o mv -Z
) las claves de un directorio donde SELinux espera que se almacenen las claves y los certificados TLS, es decir, /etc/pki/tls
y sus subdirectorios. Los nuevos archivos tendrán los contextos SELinux correctos si utilizó cp
o mv -Z
. Luego actualice las ubicaciones de los archivos en su configuración de Dovecot.