TLS:读取文件时出错

muz*_*axe 5 exim gnutls

我正在使用 Debian 8 设置新服务器。 Exim4 已预装,我正在尝试使 TLS 正常工作。

我已将蛇油密钥和证书复制到 /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
Run Code Online (Sandbox Code Playgroud)

我已经在 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
Run Code Online (Sandbox Code Playgroud)

来自 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
Run Code Online (Sandbox Code Playgroud)

我已经检查了证书,密钥和证书匹配,如在以下模数相同的测试中:

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
Run Code Online (Sandbox Code Playgroud)

我还配置了新服务器以允许 Debian-exim 登录、登录并能够毫无问题地查看证书文件。

我的所有研究都发现了证书可读、内容正确、匹配并具有正确权限或在 exim4 配置中正确指定的问题。我已经涵盖了所有这些领域,但仍然失败。

你知道我接下来应该检查哪里吗?

muz*_*axe 2

这是字面意思——它确实无法读取[证书]文件。我尝试将各种条目添加到我的配置文件中,例如:

tls_certificate=xxx.crt
tls_privatekey=xxx.key
Run Code Online (Sandbox Code Playgroud)

MAIN_TLS_CERTIFICATE=xxx.crt
MAIN_TLS_PRIVATEKEY=xxx.key
Run Code Online (Sandbox Code Playgroud)

但这些似乎都不起作用。默认情况下,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 和证书正常工作。

华泰