Import or install a certificate on an Exchange server

若要为一个或多个 Exchange 服务启用加密,Exchange 服务器需要使用证书。 内部 Exchange 服务器之间的 SMTP 通信由 Exchange 服务器上安装的默认自签名证书加密。 若要加密与内部或外部客户端、服务器或服务的通信,可能需要使用由连接到 Exchange 组织的所有客户端、服务和服务器自动信任的证书。 有关详细信息,请参阅 Exchange 服务的证书要求

可以在 Exchange 管理中心 (EAC) 或 Exchange 命令行管理程序中导入 (在 Exchange 服务器上安装) 证书。

以下是可在 Exchange 服务器上导入的证书文件类型:

  • PKCS #12 证书文件:这些是具有 .cer、.crt、.der、.p12 或 .pfx 文件扩展名的二进制证书文件,当文件包含私钥或信任链时需要密码。 这些文件类型的示例包括:

    • 使用 EAC 或 Export-ExchangeCertificatePrivateKeyExportable 参数值 $true从其他 Exchange 服务器导出的自签名证书。 有关详细信息,请参阅Export a certificate from an Exchange server

    • 证书颁发机构颁发的证书 (Active Directory 证书服务等内部 CA 或商业 CA) 。

    • 从其他服务器导出的证书 (例如 Skype for Business Server) 。

  • PKCS #7 证书文件:这些是文件扩展名为 .p7b 或 .p7c 的文本证书文件。 这些文件包含文本: -----BEGIN CERTIFICATE----------END CERTIFICATE----------BEGIN PKCS7----------END PKCS7-----。 证书颁发机构可能包括还需要与实际的二进制证书文件一起安装的一系列证书文件。

注意

将从 EAC for Exchange Server 2016 CU23 和 Exchange Server 2019 CU12 中删除证书管理任务。 使用 Exchange 命令行管理程序过程从这些版本导出/导入证书。

在开始之前,您需要知道什么?

  • 估计完成时间:5 分钟。

  • 在 EAC 中,需要从 UNC 路径 (或 \\<LocalServerName>\c$\) \\<Server>\<Share>\ 导入证书文件。 在 Exchange 命令行管理程序中,可以指定本地路径。

  • 在 EAC 中,可以同时在多个 Exchange 服务器上导入证书文件, (过程) 中的步骤 4。

  • 若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell

  • 您必须先获得权限,然后才能执行此过程或多个过程。 若要查看所需的权限,请参阅 客户端和移动设备权限主题中的"客户端访问服务安全"条目。

  • 若要了解本主题中的过程可能适用的键盘快捷键,请参阅 Exchange 管理中心内的键盘快捷键

提示

是否有任何疑问? 请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange ServerExchange OnlineExchange Online Protection

使用 EAC 在一个或多个 Exchange 服务器上导入证书

  1. 打开 EAC 并导航到 “服务器>证书”。

  2. “选择服务器” 列表中,选择要在其中安装证书的 Exchange 服务器,单击“ 更多选项”图标,然后选择“ 导入 Exchange 证书”。

  3. “导入 Exchange 证书”向导打开。 在“此向导会从文件导入证书”页上,输入以下信息:

    • 要从中导入的文件:输入证书文件的 UNC 路径和文件名。 例如,\\FileServer01\Data\Fabrikam.cer

    • 密码:如果证书文件包含私钥或信任链,则该文件受密码保护。 在此处输入密码。

    完成后,单击“下一步”。

  4. “指定要将此证书应用到的服务器 ”页中,单击“ 添加”图标。

    在打开 的“选择服务器” 页上,选择要安装证书的 Exchange 服务器,然后单击“ 添加 - >”。 根据需要重复执行此步骤(次数不限)。 选择完服务器后,单击“ 确定”。

    完成后,单击“ 完成”。 有关后续步骤,请参阅后续步骤部分。

使用 Exchange 命令行管理程序在 Exchange 服务器上导入证书

若要导入证书文件,请使用以下语法:

Import-ExchangeCertificate -FileData ([System.IO.File]::ReadAllBytes('<FilePathOrUNCPath>')) [-Password (Read-Host "Enter password" -AsSecureString)] [-PrivateKeyExportable <$true | $false>] [-Server <ServerIdentity>]

将此语法用于以下类型的证书文件:

  • 二进制证书文件 (具有 .cer、.crt、.der、.p12 或 .pfx 文件扩展名) 的 PKCS #12 文件。
  • 证书文件链 (具有 .p7b 或 .p7c 文件扩展名的 PKCS #7 文本文件) 。

此示例导入受本地 Exchange 服务器上密码P@ssw0rd1保护的证书文件 \\FileServer01\Data\Fabrikam.pfx 。 系统会提示输入密码。

Import-ExchangeCertificate -FileData ([System.IO.File]::ReadAllBytes('\\FileServer01\Data\Fabrikam.pfx')) -Password (Read-Host "Enter password" -AsSecureString)

此示例导入证书文件 \\FileServer01\Data\Chain of Certificates.p7b的链。

Import-ExchangeCertificate -FileData ([System.IO.File]::ReadAllBytes('\\FileServer01\Data\Chain of Certificates.p7b'))

有关详细语法和参数信息,请参阅 Import-ExchangeCertificate

注意:

  • 需要在要导入证书的每个 Exchange 服务器上重复此过程, (在服务器上运行 命令,或使用 Server 参数) 。
  • 如果证书文件位于运行命令的 Exchange 服务器上,则 FileData 参数接受本地路径,而这是要导入证书的同一服务器。 否则,请使用 UNC 路径。
  • 如果希望能够从要导入证书的服务器导出证书,则需要将 PrivateKeyExportable 参数与值 $true结合使用。

如何知道操作成功?

若要验证是否已成功导入 (在 Exchange 服务器上) 证书安装,请使用以下任一过程:

  • “服务器>证书”处的 EAC 中,验证是否已选择安装证书的服务器。 该证书应显示在证书的列表中,且“状态”值为“有效”

  • 在安装了证书的服务器上的 Exchange 命令行管理程序中,运行以下命令:

    Get-ExchangeCertificate | where {$_.Status -eq "Valid"} | Format-List FriendlyName,Subject,CertificateDomains,Thumbprint,NotBefore,NotAfter
    

后续步骤

在服务器上安装证书后,需要先将证书分配给一个或多个 Exchange 服务,然后 Exchange 服务器才能使用该证书进行加密。 有关详细信息,请参阅 将证书分配给 Exchange Server 服务