嗨,
我在试着让我的LE证书和信使一起工作。CheckTLS和邮件客户端一直告诉我,我的证书不受信任,因为他们不知道权威机构。通过CheckTLS检查信任链,只有le可见。
`[000.955]
证书链中的第1项(共3项):
SUBJECT=/CN=mail.[mydomain].de
颁发者=/C=US/O=我们加密/CN=我们加密授权机构X1
[000.977][老外谈]
链中证书2(共3个):
SUBJECT=/CN=mail.[mydomain].de
颁发者=/C=US/O=我们加密/CN=我们加密授权机构X1
[000.999][老外谈]
链中的证书3/3:
SUBJECT=/CN=mail.[mydomain].de
颁发者=/C=US/O=我们加密/CN=我们加密授权机构X1
证书未验证:无法获取本地颁发者证书`
我已经使用TLS_TRUSTCERTS=[对应fullchain.pem文件的路径]配置了Courier。这是对的吗?还是我必须做些别的事?
谢谢,我猜你说的那个快递员是服务员吧?你看过Courier的文档了吗?
TLS_CERTFILE=文件名
要使用的证书。TLS_CERTFILE对于SSL/TLS服务器是必需的,对于SSL/TLS客户端是可选的。文件名不能是完全可读的。
TLS_TRUSTCERTS=路径名
从路径名加载受信任的根证书。路径名可以是文件或目录。如果是文件,则该文件应包含PEM格式的受信任证书列表。如果是一个目录,则该目录应包含PEM格式的受信任证书,每个文件一个,并使用OpenSSL的c_rehash脚本进行散列。TLS_TRUSTCERTS由SSL/TLS客户端(通过指定-DOMAIN选项)和SSL/TLS服务器(TLS_VERIFYPEER设置为PEER或REQUIREPEER)使用。
TLS_VERIFYPEER=级别
是否验证对等项的X.509证书。此选项的确切含义取决于是在客户端模式还是在服务器模式下使用Couriertls。在服务器模式下:无-不从客户端请求X.509证书;对等-从客户端请求可选的X.509证书,如果客户端返回一个证书,则关闭SSL/TLS连接,除非证书由受信任的证书颁发机构签名(请参阅TLS_TRUSTCERTS);REQUIREPEER-与对等模式相同,只是如果客户端不返回可选的X.509证书,则也会关闭SSL/TLS连接。在客户端模式中:无-忽略服务器的X.509证书;根据-DOMAIN选项对等验证服务器的X.509证书(请参见上文)。
你们有快递服务吗?如果答案是肯定的:您想通过X.509证书验证客户端吗?如果答案是否定的:您能在阅读上面的问题后回答以下问题:您需要在配置中设置TLS_TRUSTCERTS或TLS_CERTFILE吗?谢谢您的回复。是的,它是一个服务器。是的,我不想对客户端进行身份验证。
我已经将证书和私钥连接到一个文件中,并通过TLS_CERTFILE指向该文件。我是不是也要把链子和那个连在一起?或者我必须做什么才能告诉客户信任链?出于某种原因,每个在线的“HOWTO”都会告诉你应该使用TLS_TRUSTCERTS作为中间的PEM文件。在我看来,如果你阅读了文档,那就是胡说八道。
我建议将fullchain.pem和Prikey.pem连接到一个文件中,并将该文件提供给TLS_CERTFILE。看看它能做什么。
顺便问一下,为什么你最初的CheckTLS测试会给出三个证书?它们看起来是一样的?,我不熟悉Courier配置,但从上面的文档中我的直觉是TLS_TRUSTCERTS=/Path/to/chain.pem和TLS_CERTFILE=/Path/to/cert.pem(或者因为没有明显的方法来指定私钥(!),可能是TLS_CERTFILE和cert.pem的串联,作为@Osiris建议的变体)。我已经在新的Courier-IMAP安装和两个设置工作上测试了这两个设置:
将所有内容(cert.pem,chain.pem[=与fullchain.pem相同])和Prikey.pem放在配置文件中,并使用TLS_CERTFILE引用它们(我是按照这个顺序测试的);
请参阅TLS_TRUSTCERTS中的chain.pem。但是我不知道为什么,但是我的Courier-IMAP还将DST Root CA X3证书发送到客户端…在我看来,这很奇怪,因为在PEM文件中找不到那个证书?
我个人认为:TLS_TRUSTCERTS用于客户端证书验证,因此从语义上讲,最好的选择是将所有内容放在一个文件中。不幸的是,您必须将私钥与证书放在一起,所以链证书是否额外并不重要,…,对不起,回复晚了。我想我找到了一个解决方案。
决定性的不是快递证书,而是QMail。在我的例子中,如果您想为多个域提供证书,QMail是瓶颈,因为它不接受.pem文件中的多个证书,并且总是返回第一个证书,从而导致不同的域名。
对于任何想要设置类似配置的人来说,这种方法应该是成功的:
使用letsENCRYPT-AUTO(带有“certonly”和多个-d参数,每个参数后跟一个域)在一个证书中为您的域创建证书。
将证书/私钥/链连接到一个文件中,并通过“TLS_CERTFILE”在imapd-ssl(Courier)中引用它(这里可能有多个域的多个证书)。保持“TLS_TRUSTCERTS”不变。
将证书/私钥/完整链连接到QMail servercert.pem文件(在我的例子中位于/var/qmail/control)。
重新启动Courier-imapd/qmail/xinetd服务。
感谢@Osiris和@Schoen的帮助。