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

TLS: ошибка при чтении файла

Я настраиваю новый сервер с Debian 8. Exim4 предустановлен, и я пытаюсь заставить TLS работать.

Я скопировал ключ snakeoil и сертификат в папку / etc / exim4 и установил правильные разрешения и права собственности:

-r--r-----  1 root Debian-exim  1704 Sep 28 20:01 ssl-cert-snakeoil.key
-r--r-----  1 root Debian-exim  1257 Sep 28 20:01 ssl-cert-snakeoil.pem

Я настроил их в Exim4

Затем со второго сервера я пытаюсь подключиться к SMTP и запустить TLS следующим образом:

root@second: ~# telnet mynewserver.net.au 25
Trying xxx.xxx.xxx.xxx...
Connected to mynewserver.net.au.
Escape character is '^]'.
220 mynewserver.net.au ESMTP Exim 4.84_2 Wed, 28 Sep 2016 20:12:12 +1000
ehlo second
250-mynewserver.net.au Hello second [xxx.xxx.xxx.xxx]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-STARTTLS
250 HELP
STARTTLS
454 TLS currently unavailable

А журнал отладки mynewserver выглядит так:

  665 SMTP>> 250-mynewserver.net.au Hello second [xxx.xxx.xxx.xxx]
  665 250-SIZE 52428800
  665 250-8BITMIME
  665 250-PIPELINING
  665 250-STARTTLS
  665 250 HELP
  665 SMTP<< STARTTLS
  665 initialising GnuTLS as a server
  665 GnuTLS global init required.
  665 initialising GnuTLS server session
  665 Expanding various TLS configuration options for session credentials.
  665 certificate file = '/etc/exim4/ssl-cert-snakeoil.pem'
  665 key file = '/etc/exim4/ssl-cert-snakeoil.key'
  665 LOG: MAIN
  665   TLS error on connection from second (second) [xxx.xxx.xxx.xxx] (cert/key setup: cert='/etc/exim4/ssl-cert-snakeoil.pem' key='/etc/exim4/ssl-cert-snakeoil.key'): Error while reading file.
  665 SMTP>> 454 TLS currently unavailable

Я проверил сертификаты, что ключ и сертификат совпадают, как в следующем тесте, где модуль одинаков:

root@mynewserver: exim4# openssl x509 -noout -modulus -in ssl-cert-snakeoil.pem | openssl md5
(stdin)= 4d56fe03bcdc3103788344d0d7a2eb8d
root@mynewserver: exim4# openssl x509 -noopenssl rsa -noout -modulus -in ssl-cert-snakeoil.key | openssl md5
(stdin)= 4d56fe03bcdc3103788344d0d7a2eb8d

Я также настроил новый сервер, чтобы позволить Debian-exim входить в систему, входить в систему и без проблем просматривать файлы сертификатов.

Все мои исследования выявили проблемы с читаемостью сертификатов, с правильным содержимым, соответствием и правильными разрешениями или с правильным указанием в конфигурации exim4. Я рассмотрел все эти области, но все равно ничего не вышло.

У тебя есть идеи, где я должен проверить дальше?

Это буквальное значение - он действительно не может прочитать файл [сертификат]. Я пробовал добавлять в свой файл конфигурации различные записи, например:

tls_certificate=xxx.crt
tls_privatekey=xxx.key

и

MAIN_TLS_CERTIFICATE=xxx.crt
MAIN_TLS_PRIVATEKEY=xxx.key

Но, похоже, ничего из этого не работает. По умолчанию exim4 ищет CONFIGDIR / exim.crt и CONFIGDIR / exim.key (CONFIGDIR для моего / etc / exim4)

Итак, скопируйте свой сертификат и ключ к этим двум именам файлов. Удалите все ранее добавленные записи конфигурации, так что exim4 будет искать записи по умолчанию, не отвлекаясь. Убедитесь, что ваш сертификат и ключ доступны для чтения exim4:

  1. Установите группу на Debian-exim (chrgrp Debian-exim exim. *)
  2. Установите разрешение на чтение для группы (chmod g + r exim. *)
  3. Перезагрузите ваш exim4
  4. Затем я использовал checktls.com, чтобы убедиться, что TLS и сертификат работают правильно.

HTH

Я столкнулся с той же проблемой после обновления сертификатов Let's Encrypt. Для протокола: Thunderbird жаловался на то, что

Невозможно установить безопасное соединение с сервером исходящей почты (SMTP) smtp.example.org с помощью STARTTLS, поскольку он не рекламирует эту функцию. Отключите STARTTLS для этого сервера или обратитесь к поставщику услуг.

Оказалось, что у нового закрытого ключа сертификата недостаточно прав на чтение, мне пришлось chmod a+r это - нет exim4 необходим перезапуск.