Я настроил SSL, добавив эти строки в 01_exim4-config_listmacrosdefs
. Я использую раздельную конфигурацию
MAIN_TLS_ENABLE = yes
MAIN_TLS_CERTKEY = /etc/exim4/example.com.crt
MAIN_TLS_PRIVATEKEY = /etc/exim4/example.com.key
Итак, после перезапуска, подключившись к порту 465, набрав EHLO
и STARTTLS
Получил вот что: 454 TLS currently unavailable
В журнале у меня такое:
13:29:36 10872 SMTP<< STARTTLS
13:29:36 10872 initialising GnuTLS as a server
13:29:36 10872 GnuTLS global init required.
13:29:36 10872 initialising GnuTLS server session
13:29:36 10872 Expanding various TLS configuration options for session credentials.
13:29:36 10872 certificate file = /etc/exim4/example.com.crt
13:29:36 10872 key file = /etc/exim4/example.com.crt
13:29:36 10872 LOG: MAIN
13:29:36 10872 TLS error on connection from (192.168.1.111) [91.210.44.50] (cert/key setup: cert=/etc/exim4/example.com.crt key=/etc/exim4/example.com.crt): Error in parsing.
Почему exim использует один и тот же файл для сертификата и ключа? Как исправить?
Я должен был использовать MAIN_TLS_CERTIFICATE
вместо того MAIN_TLS_CERTKEY
.
@chicks Я бы поддержал, если бы серверный сбой позволил мне.
Все еще ловит людей (то есть меня более двух лет спустя).
Технически комментарии в conf.d/main/03_exim4-config_tlsoptions
скажите, что если у вас есть сертификат и ключ в тем же файл, затем используйте MAIN_TLS_CERTKEY
. Это плохая практика, но разрешенная.
# MAIN_TLS_CERTIFICATE - path to certificate file,
# CONFDIR/exim.crt if unset
# MAIN_TLS_PRIVATEKEY - path to private key file
# CONFDIR/exim.key if unset
# You can also configure exim to look for certificate and key in the
# same file, set MAIN_TLS_CERTKEY to that file to enable. This takes
# precedence over all other settings regarding certificate and key file.
Я замолчал и сразу перешел к ifdef
заявления. Первый из них:
.ifdef MAIN_TLS_CERTKEY
и я полностью пропустил .else
часть:
.ifdef MAIN_TLS_CERTKEY
tls_certificate = MAIN_TLS_CERTKEY
.else
.ifndef MAIN_TLS_CERTIFICATE
MAIN_TLS_CERTIFICATE = CONFDIR/exim.crt
.endif
tls_certificate = MAIN_TLS_CERTIFICATE
TL; DR: Да, установить MAIN_TLS_CERTIFICATE
скорее, чем MAIN_TLS_CERTKEY
.