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. Я охватил все эти области, но все же это не удалось.
У вас есть идеи, где я должен проверить дальше?
3 ответа
Это буквальное значение - он действительно не может прочитать файл [сертификат]. Я попытался добавить различные записи в мой файл конфигурации, например:
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:
- Установите группу в Debian-exim (chrgrp Debian-exim exim.*)
- Установите разрешение на чтение группы (chmod g+r exim.*)
- Перезапустите ваш exim4
- Затем я использовал checktls.com, чтобы убедиться, что TLS и сертификат работают правильно.
НТН
Я думаю, что общее правило заключается в том, что пользователю, с которым запускается любой демон при запуске, потребуется тот же пользователь для доступа к файлу, включая его родительский каталог:
В Дебиане:
Debian-exim 28104 0.0 0.1 109736 2752 Ss Jan24 0:09 /usr/sbin/exim4 -bd -q30m
установите группу Debian-exim в файлах и каталоге /etc/letsencrypt/
chgrp Debian-exim /etc/letsencrypt/ -R
Я думал, что дело в формате сертификата или поврежденном файле, но установка владельца группы решила проблему.
Я столкнулся с той же проблемой после обновления сертификатов Let's Encrypt. Для записи, Thunderbird жаловался на то, чтобы быть
Невозможно установить безопасную связь с исходящим сервером (SMTP) smtp.example.org с помощью STARTTLS, поскольку он не рекламирует эту функцию. Отключите STARTTLS для этого сервера или обратитесь к поставщику услуг.
Оказалось, что закрытый ключ нового сертификата не имеет достаточных разрешений на чтение, мне пришлось chmod a+r
это - нет exim4
перезагрузка нужна.