Назад | Перейти на главную страницу

Почему exim читает сертификат и ключ из одного файла?

Я настроил 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.