AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 790121
Accepted
JeremyCanfield
JeremyCanfield
Asked: 2016-07-16 12:13:36 +0800 CST2016-07-16 12:13:36 +0800 CST 2016-07-16 12:13:36 +0800 CST

OpenSSL 未提供客户端证书(SMTP、Postfix)

  • 772

我使用 OpenSSL 创建了一个私钥和自签名的公共证书。然后,我创建了一个包含私钥和公共证书 (mail.example.com.pem) 的证书颁发机构文件。在 LAN 中的客户端计算机上,我使用 OpenSSL 连接到端口 587 (SMTP) 上的 Postfix,并告诉 OpenSSL 使用证书颁发机构文件 (mail.example.com.pem)。

openssl s_client -connect mail.example.com:587 -starttls smtp -CAfile /etc/pki/tls/private/mail.example.com.pem

这会产生相当多的输出。输出中包含来自证书颁发机构文件的公共证书。

在此处输入图像描述

在所有的 TLS、证书和其他安全信息之后,我有一个闪烁的光标,所以我尝试向 Postfix 打招呼。

EHLO mail.example.com

此命令生成“未提供客户端证书”。

在此处输入图像描述

这很奇怪,因为我可以从字面上看到前面输出中的公共证书。我有一种感觉,我在这里遗漏了一些概念性的东西。例如,我是否需要告诉客户端发送或使用公共证书?Postfix 服务器上的公共证书与客户端证书不同吗?

目标:我的总体目标是将 Postfix 配置为加密电子邮件,而不是发送未加密的电子邮件。

这是postconf -n命令的输出:

data_directory = /var/lib/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailbox_command =
mydestination = example.com, localhost.example.com, localhost
mynetworks_style = host
queue_directory = /var/spool/postfix
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = no
smtpd_sasl_path = private/auth
smtpd_tls_CAfile = /etc/pki/tls/mail.example.com.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.example.com.crt
smtpd_tls_key_file = /etc/pki/tls/mail.example.com.key
smtpd_tls_loglevel = 3
smtpd_tls_req_ccert = yes
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
smtpd_tls_session_cache_timeout = 3600s
tls_random_exchange_name = /var/lib/postfix/prng_exch
tls_random_source = dev:/dev/urandom
smtp postfix openssl tls
  • 1 1 个回答
  • 3947 Views

1 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2016-07-16T17:41:15+08:002016-07-16T17:41:15+08:00

    您已smtpd_tls_req_ccert在 Postfix 配置中进行设置。

    该指令要求所有客户端都具有您颁发给该特定客户端的客户端证书。然后,仅允许来自预先批准的主机的传入 SMTP 连接到您的服务器。

    这显然不是你想要的。您正在尝试从整个 Internet 接收邮件,并且您不可能向世界上的每个 SMTP 服务器颁发客户端证书。

    首先,删除该指令,然后重试。您可能还有其他问题,但这是导致直接问题的原因。

    • 4

相关问题

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 如何将 SMTP 直接从 IIS 6.0 服务器中继到 Exchange 2003 服务器

  • 使用 telnet 或 netcat 发送带有附件的电子邮件

  • 我应该使用什么策略在 linux 上安装 smtp 服务器?用于多线程服务

  • 适用于 Linux 的 SMTP 服务器,配置简单

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve