在C#中更新Exchange Server证书

时间:2017-08-28 14:02:17

标签: c# ssl-certificate exchange-server x509certificate2

我的目标是在C#应用程序中更新Exchange Server证书,就像{Cmdlet Enable-ExchangeCertificate PS Cmdlet一样。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

MS Exchange中有多个部分未被API覆盖。这主要是出于安全原因或非常复杂,因此无需API(例如Exchange架构更新)。

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

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

  2. 导入证书

  3.   

    Import-ExchangeCertificate -FileData([Byte []] $(Get-Content -Path   c:\ certificates \ YOUR_CERTIFICATE.cer -Encoding byte -ReadCount 0))

    但是有些人使用MMC并且这也正常工作(因此您可能会为此部分检查MMC的API)。

    1. 启用
    2.   

      启用ExchangeCertificate -Thumbprint   1234ae0567a72fccb75b1d0198628675333d010e - 服务POP,IMAP,SMTP,IIS

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

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

      P.S。我永远不会在我的Exchange服务器上运行一个未知的插件,它会替换我可以通过简单的PowerShell命令执行的SSL证书。该插件可能会导致很多其他问题,并且可能包含很多不那么“好”的东西。因此,在你花时间进入该项目之前,请考虑是否真的有观众。