У меня есть несколько доменов на моем почтовом сервере (postfix + dovecot), и я хочу назначить определенный сертификат для каждого домена.
Предполагая документацию dovecot, я пробовал эту конфигурацию:
local_name smtp.domain1.com {
ssl_cert = </etc/ssl/certs/domain1.com-cert.pem
ssl_key = </etc/ssl/private/domain1.com-privkey.key
ssl_ca = </etc/ssl/certs/domain1.com-chain.pem
}
local_name smtp.domain2.com {
ssl_cert = </etc/ssl/certs/smtp.domain2.com-cert.pem
ssl_key = </etc/ssl/private/smtp.domain2.com-privkey.key
ssl_ca = </etc/ssl/certs/smtp.domain2.com-chain.pem
}
Но не работает. Эта ошибка возвращается, когда я пытаюсь подключиться к веб-почте (roundcube):
Apr 22 22:36:06 localhost dovecot: imap-login: Fatal: Couldn't parse private ssl_key: error:0906D06C:PEM routines:PEM_read_bio:no start line: Expecting: ANY PRIVATE KEY
Apr 22 22:36:06 localhost dovecot: master: Error: service(imap-login): command startup failed, throttling for 2 secs
Когда я пытаюсь использовать openssl s_client:
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 176 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1524436845
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
Без local_name (всего 1 набор сертификатов) все работает нормально.
Что не так с моей конфигурацией?
Добавляю в dovecot.conf строку:
!include /etc/dovecot/conf.d/*.conf
в конце и удалить
ssl_cert = </path/to/cert.pem
ssl_key =</path/to/key.pem
ssl_protocols = !SSLv3
(после раскомментирования той же строки в 10-ssl.conf)
и теперь это работает