
Auf meinem CentOS 7-System versuche ich, Dovecot mit erforderlichem TLS auszuführen. Dafür habe ich meinen privaten Schlüssel und mein Zertifikat in
[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 /]#
Damit Dovecot die Dateien tatsächlich lädt, habe ich sichergestellt, dass /etc/dovecot/conf.d/10-ssl.conf diese Zeilen enthält:
ssl=required
ssl_key=</indernet/cert/homeserver.key
ssl_cert=</indernet/cert/homeserver.crt
Der problematische Teil: Dovecot kann nicht gestartet werden, es schlägt mit diesem Fehler fehl:
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
Ich habe versucht, die Dateiberechtigungen des Zertifikats und des Schlüssels zu ändern (dies sollte lauthttps://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/), sogar auf 777 und nichts ändert sich. Jemand meinte, es könnte SELinux sein, das den Zugriff verhindert, und ich habe unconfined_u:object_r:default_t:s0 sowie system_u:object_r:default_t:s0 konfiguriert, wie Sie oben sehen können. Keine Änderung.
Nun der überraschende Teil: Ich wurde sehr neugierig und habe /usr/lib/systemd/system/dovecot.service bearbeitet, um es einzuschließen
ExecStart=/bin/strace /usr/sbin/dovecot
und dann konnte ich in /var/log/messages sehen, wie auf das Zertifikat und den Schlüssel zugegriffen und diese geladen wurden. Und Dovecot funktioniert. Aber wenn ich Strace wieder entferne, habe ich immer noch das gleiche Problem.
Was kann hier los sein?
Antwort1
Die Schlüssel können nicht gelesen werden, da SELinux den Zugriff darauf verweigert hat.
Um das Problem zu lösen,Kopieren(mit cp
oder mv -Z
) die Schlüssel zu einem Verzeichnis, in dem SELinux die Speicherung von TLS-Schlüsseln und -Zertifikaten erwartet, d. h. /etc/pki/tls
und dessen Unterverzeichnisse. Die neuen Dateien haben die richtigen SELinux-Kontexte, wenn Sie cp
oder verwendet haben mv -Z
. Aktualisieren Sie dann die Speicherorte der Dateien in Ihrer Dovecot-Konfiguration.