在 C# 中更新 Exchange 服务器证书



我的目标是从 C# 应用程序中更新 Exchange 服务器的证书,就像Enable-ExchangeCertificatePS Cmdlet 一样。

我已经为 IIS 编写了一个更新程序,它使用Microsoft.Web.Administration来访问和操作 IIS 站点和绑定。我已经在Google和VS Libraries中搜索了Exchange API工具,但没有任何运气。我只能找到对 EWS(Exchange Web 服务)的引用,它无法更新服务器证书 AFAIK。

是否有可以使用的 API?Enable-ExchangeCertificate如何提供这些功能?如果所有其他方法都失败了,我也在考虑只使用 PS Cmdlet,但我想有一个独立的应用程序可以依赖。无需远程服务器管理,仅本地主机就可以了。

tl;dr 如何在 C# 中更新本地 Exchange Server 证书?

编辑我将进一步研究 EWS API(https://github.com/OfficeDev/ews-managed-api/blob/master/README.md),看起来它可以完成这项工作。它提供了程序集来访问 EWS 数据,但我还没有找到任何专门用于证书管理的 API 调用。

MS Exchange 中有多个部分未被 API 覆盖。这主要是由于安全原因,或者因为它非常复杂,因此不需要API(例如Exchange Schema更新)。

正常的Microsoft方式只包括两个步骤:

  1. 备份当前配置和SSL证书(可选)

  2. 导入证书

Import-ExchangeCertificate -FileData ([byte[]]$(get-content -path c:\certificates\YOUR_CERTIFICATE.cer -编码字节 -读取计数 0))

但是有些人使用 MMC,这也在工作(所以你可以检查这部分的 MMC API)。

  1. >启用它

启用交换证书 - 指纹 1234ae0567a72fcb75b1d0198628675333d010e -服务 POP,IMAP,SMTP,IIS

我假设没有这样的 API,因为它实际上并不需要一个。通常,SSL证书的有效期为3年。因此,您需要每 3 年运行一次 1x 以上的命令,并且第三方访问此部分没有任何意义,因为它不会经常使用,因此Microsoft没有构建一个。

在这里为您提供更多信息。Microsoft的 SSL 证书信息保存在两个位置。一个在本地注册表中,一个在Microsoft Active Directory中(请参阅此处:使用 Active Directory 轻量级目录服务 (AD LDS) 的本地实例读取和写入数据)。在没有Microsoft支持的情况下处理对 ActiveDirectory 的更改可能非常危险,并且意味着如果这导致问题,Microsoft不提供任何支持。所以我会在你的应用程序中使用Powershell方法Enable-ExchangeCertificate。

附言我永远不会在我的 Exchange 服务器上运行一个未知的插件,它确实会替换 SSL 证书,我可以通过一个简单的 powershell 命令来完成。该插件可能会导致许多其他问题,并且可能包含很多不太"好"的东西。因此,在你浪费时间进行该项目之前,请考虑一下它是否真的有观众。

最新更新