我在 Debian 7 系统上运行 Cyrus。我想通过仅允许特定服务访问 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
当我将 private.key 的 chmod 改回 644 时,它确实起作用了。将其设置为 640,它就不再起作用了。
我该怎么做才能让 cyrus 工作?为什么以 cyrus 身份运行的进程无法访问 private.key?