我正在配置 Postfix 服务器(CentOS 8 上的版本 3.3.1)
如果我同时配置 smtpd_tls_CAfile 和 smtpd_tls_CApath,postfix 会加载所有证书还是会选择其中一个选项?
我无法从这里的文档中看出:http://www.postfix.org/postconf.5.html#smtp_tls_CApath
答案1
基于源代码它将接受两个参数并使用它们来调用 OpenSSL 函数SSL_CTX_load_verify_locations。此函数将路径和文件都添加到 SSL 上下文中,并且在验证证书时将检查两者是否为受信任的 CA。换句话说:这些参数不是唯一的,但会考虑这两个值。
答案2
在过去的糟糕日子里,一些操作系统会将受信任的 CA 证书放在单独的文件中,所有文件都放在某个目录中。这是您将使用的目录smtpd_tls_CApath
。
到 21 世纪为止,几乎所有 Linux 发行版都附带一个预构建的单个文件,其中包含所有受信任的 CA 证书。它的位置因 Linux 发行版而异,但无论它放在哪里,它都是您将使用的文件名smtpd_tls_CAfile
。
这些选项是互斥的。你只能使用其中之一,具体取决于你的操作系统如何发送其受信任的 CA 证书。最有可能的是smtpd_tls_CAfile
。在 CentOS 8 上,CA 证书包位于/etc/pki/tls/certs/ca-bundle.crt
,为你提供以下main.cf
配置:
smtpd_tls_CAfile=/etc/pki/tls/certs/ca-bundle.crt