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 / 问题 / 1022772
Accepted
Caynadian
Caynadian
Asked: 2020-06-25 08:42:18 +0800 CST2020-06-25 08:42:18 +0800 CST 2020-06-25 08:42:18 +0800 CST

Exchange 2016 服务器拒绝证书过期

  • 772

我们使用 TLS 从我们 DMZ 中的 Windows 2012R2(未加入域)Web 服务器发送到我们的内部 Exchange 2016 服务器(也在 Windows 2012R2 上运行)。直到大约一个月前,当他们停止通过时,这一直运行良好(我们现在才注意到它,因为电子邮件非常罕见)。我强制通过测试邮件,当我查看传输角色协议日志时,我看到以下内容:

2020-06-24 11:02:33.524,
  MAILSERVER\Client Frontend MAILSERVER,
  0102030405060708,
  6,
  192.168.1.44:587,
  192.168.2.3:64961,
  *,
  " CN=*.example.com CN=Sectigo RSA Domain Validation Secure Server CA, O=Sectigo Limited, L=Salford, S=Greater Manchester, C=GB     
    0102030405060708090A0B0C0D0E0F10
    0102030405060708090A0B0C0D0E0F1011121314
    2020-03-17T19:00:00.000Z 
    2021-03-18T18:59:59.000Z 
    *.example.com;example.com",
  Sending certificate Subject Issuer name Serial number Thumbprint Not before Not after Subject alternate names

2020-06-24 11:02:33.540,
  MAILSERVER\Client Frontend MAILSERVER,
  0102030405060708,
  7,
  192.168.1.44:587,
  192.168.2.3:64961,
  *,
  ,
  TLS negotiation failed with error CertExpired

可以看到证书的有效期为 2020 年 3 月 17 日至 2021 年 3 月 18 日。

客户端显示以下错误日志:

SERVER -> CLIENT: 220 mailserver.example.com Microsoft ESMTP MAIL Service ready at Wed, 24 Jun 2020 11:02:32 -0500
CLIENT -> SERVER: EHLO www.example.com
250-SIZE 36700160
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250 CHUNKING
CLIENT -> SERVER: STARTTLS
SERVER -> CLIENT: 220 2.0.0 SMTP server ready
Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed [E:\...\class-smtp.php line 374]SMTP Error: Could not connect to SMTP host.
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: SMTP ERROR: QUIT command failed: Connection: closedSMTP Error: Could not connect to SMTP host.

邮件服务器上的事件日志显示以下事件:

A fatal alert was received from the remote endpoint. The TLS protocol defined fatal alert code is 45.
- System 
 - Provider 
     [ Name]  Schannel 
     [ Guid]  {1F678132-5938-4686-9FDC-C8FF68F15C85} 
   EventID 36887 
   Version 0 
   Level 2 
   Task 0 
   Opcode 0 
   Keywords 0x8000000000000000 
 - TimeCreated 
     [ SystemTime]  2020-06-24 11:02:33.540386500
   EventRecordID 417754 
   Correlation 
 - Execution 
     [ ProcessID]  484 
     [ ThreadID]  1552 
   Channel System 
   Computer mailserver.example.com 
 - Security 
     [ UserID]  S-1-5-18 
- EventData 
    AlertDesc 45 

但是,同样,这个事件只是表明一个过期的证书。

关于为什么 Exchange 认为证书已过期的任何想法?我已经检查了两台机器上的日期/时间,它们对第二台机器都是正确的。谢谢!

exchange ssl-certificate exchange-2016
  • 3 3 个回答
  • 634 Views

3 个回答

  • Voted
  1. dave_thompson_085
    2020-06-25T23:13:28+08:002020-06-25T23:13:28+08:00

    您的信息未显示使用的链证书 - 尝试openssl s_client -connect $host:$port -servername $host -showcerts运行每个生成的 PEM 块openssl x509 -text,或者如果您更喜欢将它们放入(单独的)文件并双击。(如果您不再需要 OpenSSL 1.1.1 -servername $host。)

    许多 Comodo^WSectigo CA 使用 USERTrust-to-AddTrust 桥,该桥于 5 月 30 日到期;请参阅https://security.stackexchange.com/questions/232978/how-to-fully-view-cross-signed-certificate-signatures和https://stackoverflow.com/questions/62107431/curl-error-60-ssl -certificate-problem-certificate-has-expired并从这两个链接https://support.sectigo.com/articles/Knowledge/Sectigo-AddTrust-External-CA-Root-Expiring-May-30-2020。特别是 Sectigo RSA DV 服务器的唯一透明记录证书是 USERTrust RSA下的https://crt.sh/?id=924467861 ,它在https://crt.sh/?caid=1167列出了四个已知证书因此,如果您使用的是 AddTrust #4860286,您可以看到它的 notAfter 是 2020-05-30——大约一个月前。

    • 2
  2. Joy Zhang
    2020-06-25T22:28:29+08:002020-06-25T22:28:29+08:00

    这正是 joeqwerty 上面所说的,您是否检查了分配给证书或绑定到连接器的 SMTP 服务?

    您可以运行以下命令进行检查:

    Get-ReceiveConnector | FL Identity,RemoteIPRanges,PermissionGroups,Auth*,TlsCertificateName
    

    有关更多详细信息:为 Exchange Server 接收连接器配置 TLS 证书名称

    • 1
  3. Best Answer
    Caynadian
    2020-06-27T06:28:14+08:002020-06-27T06:28:14+08:00

    所以@dave_thompson_085 的想法是正确的,因为问题是位于我的证书链根的 AddTrust 证书已过期。在 Exchange 服务器上解决问题后(通过重新创建没有 AddTrust 根的 PFX 证书文件并重新导入它)我仍然遇到同样的错误。我设置了第二个客户端并尝试发送电子邮件,发现它工作正常,所以我知道问题必须出在客户端机器上。在 Exchange 服务器上使用 WireShark,我观察了两台机器之间的 TLS 流量,并且可以看到 Exchange 服务器会发送证书及其直接父证书(Sectigo CA 证书),然后客户端会因为过期而拒绝它(即使两者证书有效)。我假设客户端必须验证收到的证书并以某种方式发现它们链接到过期的 AddTrust 根。电子邮件是由 PHPMailer 发送的,所以我查看了 PHP 设置,发现它有一个它使用的 CA 包(因为 PHP 显然不能使用 Windows 证书存储)。查看那个 CA 捆绑包,我发现并删除了 AddTrust 证书并纠正了问题。

    • 0

相关问题

  • 如何在使用 RPC over HTTPS 时停止 Outlook 2007 要求提供凭据

  • Exchange 备份的 NT 备份是否会使 Exchange 脱机?

  • 如何在 Exchange 2007 中设置资源邮箱日历的忙/闲权限?

  • Exchange 2007:将带有 SenderID 的邮件移动到垃圾邮件文件夹失败?

  • 如何使用 Exchange 2003 SP2 将垃圾邮件发送到个人垃圾文件夹?

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