Export-ExchangeCertificate

此 cmdlet 仅适用于本地 Exchange。

使用 Export-ExchangeCertificate cmdlet 从 Exchange 服务器导出现有证书和挂起的证书请求 (也称为证书签名请求或 CSR) 。

有关以下语法部分的参数设置的详细信息,请参阅 Exchange cmdlet 语法

语法

Export-ExchangeCertificate
      [-Thumbprint] <String>
      [-Server <ServerIdParameter>]
      [-BinaryEncoded]
      [-Confirm]
      [-DomainController <Fqdn>]
      [-FileName <String>]
      [-Password <SecureString>]
      [-WhatIf]
      [<CommonParameters>]
Export-ExchangeCertificate
      [[-Identity] <ExchangeCertificateIdParameter>]
      [-BinaryEncoded]
      [-Confirm]
      [-DomainController <Fqdn>]
      [-FileName <String>]
      [-Password <SecureString>]
      [-WhatIf]
      [<CommonParameters>]

说明

Export-ExchangeCertificate cmdlet 将会创建下列文件类型:

  • 证书文件:导出证书时,命令将创建 PKCS #12 文件。 PKCS #12 是 RSA 实验室指定的个人信息交换语法标准。 有关详细信息,请参阅 PKCS #12:个人信息交换语法标准

    若要从 Exchange 服务器导出证书,证书的 PrivateKeyExportable 属性需要具有值 True。 若要在另一个 Exchange 服务器上导入导出的证书,需要使用 Password 参数导出证书,以在证书文件中包括私钥或信任链。 在 Exchange 管理中心或使用 New-ExchangeCertificate cmdlet 的默认设置创建的默认Microsoft Exchange 自签名证书或新的自签名证书不可导出,因为私钥不可导出 (PrivateKeyExportable 参数的默认值$false) 。

  • 证书请求文件:导出证书请求时,命令将创建 PKCS #10 文件。 PKCS #10 是 RFC 2314 指定的认证请求语法标准。 有关详细信息,请参阅 PKCS #10:认证请求语法

    如果需要重新将证书申请提交到证书颁发机构,则通常需要导出证书申请文件。 你无法将已导出的证书申请导入到另一个服务器。

您必须先获得权限,然后才能运行此 cmdlet。 虽然本主题中列出了此 cmdlet 的所有参数,但如果这些参数并未包含在分配给您的权限中,那么您将无法使用这些参数。 若要查找在贵组织中运行任何 cmdlet 或参数所需的权限,请参阅 Find the permissions required to run any Exchange cmdlet

示例

示例 1

Export-ExchangeCertificate -Thumbprint 5113ae0233a72fccb75b1d0198628675333d010e -FileName "C:\Data\HT cert.pfx" -BinaryEncoded -Password (Get-Credential).password

Exchange 2013 中,此示例将证书从本地 Exchange 服务器导出到具有以下设置的文件:

  • 要导出的证书的指纹值为 5113ae0233a72fccb75b1d0198628675333d010e。
  • 导出的证书文件是 DER 编码 (二进制) ,而不是 Base64。
  • 出现提示时输入密码。
  • 证书将导出到文件 C:\Data\HT cert.pfx。

注意:FileName 参数仅在 Exchange 2013 中可用。 若要导出 Exchange 2016 或 Exchange 2019 中的证书,请参阅示例 2。

示例 2

$bincert = Export-ExchangeCertificate -Thumbprint 5113ae0233a72fccb75b1d0198628675333d010e -BinaryEncoded -Password (Get-Credential).password

[System.IO.File]::WriteAllBytes('C:\Data\HT cert.pfx', $bincert.FileData)

此示例从示例 1 中导出相同的证书。 此方法在 Exchange 2016 和 Exchange 2019 中是必需的,因为 FileName 参数不可用。

示例 3

Export-ExchangeCertificate -Thumbprint 72570529B260E556349F3403F5CF5819D19B3B58 -Server Mailbox01 -FileName "\\FileServer01\Data\Fabrikam.req"

Exchange 2013 中,此示例将挂起的证书请求导出到具有以下设置的文件:

  • 要导出的证书请求的指纹值为 72570529B260E556349F3403F5CF5819D19B3B58,位于名为 Mailbox01 的 Exchange 服务器上。
  • 导出的证书申请文件是 Base64 编码的文件,因此,写入到该文件的信息也显示在屏幕上。
  • 证书请求将导出到文件 \\FileServer01\Data\Fabrikam.req。

注意:FileName 参数仅在 Exchange 2013 中可用。 若要在 Exchange 2016 或 Exchange 2019 中导出挂起的证书请求,请参阅示例 4。

示例 4

$txtcert = Export-ExchangeCertificate -Thumbprint 72570529B260E556349F3403F5CF5819D19B3B58 -Server Mailbox01

[System.IO.File]::WriteAllBytes('\\FileServer01\Data\Fabrikam.req', [System.Text.Encoding]::Unicode.GetBytes($txtcert))

此示例从示例 3 导出相同的挂起证书请求。 此方法在 Exchange 2016 和 Exchange 2019 中是必需的,因为 FileName 参数不可用。

参数

-BinaryEncoded

BinaryEncoded 开关指定使用可分辨编码规则 (DER) 对导出的证书或证书申请文件进行编码。 不必为此开关指定值。

您通常会在导出证书时使用此开关,因为您可以在使用 Password 参数的同时,将证书及其私钥或信任链存储在一个二进制文件中。 如果您不使用此开关,则导出的证书文件会进行 Base64 编码,并且您需要单独导出信任链中的所有中间证书或根证书。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-Confirm

Confirm 开关指定是否显示确认提示。 此开关对 cmdlet 造成的影响取决于在你继续操作之前 cmdlet 是否需要确认。

  • 破坏性 cmdlet (例如,Remove-* cmdlet) 具有内置的暂停,该暂停会强制你在继续操作之前确认命令。 对于这些 cmdlet,您可以使用此确切语法跳过确认提示:-Confirm:$false
  • 大多数其他 cmdlet (例如,New-* 和 Set-* cmdlet) 没有内置暂停。 对于这些 cmdlet,指定不含值的 Confirm 开关会引入暂停,从而强制要求你先确认命令,然后再继续操作。
Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-DomainController

DomainController 参数指定此 cmdlet 从 Active Directory 读取数据或向其写入数据时使用的域控制器。 可以使用完全限定的域名 (FQDN) 来标识域控制器。 例如,dc01.contoso.com。

边缘传输服务器上不支持 DomainController 参数。 边缘传输服务器使用活动目录轻型目录服务 (AD LDS) 的本地实例来读取和写入数据。

Type:Fqdn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-FileName

注意:此参数已被 2022 H1 累积汇报从 Exchange 2016 和 Exchange 2019 中删除,因为它接受 UNC 路径值。 若要在不使用 FileName 参数的情况下将证书或证书请求导出到文件,请使用示例 2 和示例 4 中所述的方法。

此参数仅在 Exchange 2013 中可用。

FileName 参数指定导出的证书或证书申请文件的文件名和路径。 如果证书或证书请求位于运行命令的同一 Exchange 服务器上,则可以使用本地路径。 否则,请使用 UNC 路径 (\\Server\Share) 。 如果值中有空格,请使用双引号 (") 将此值括起来。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013

-Identity

Identity 参数指定要导出的证书或证书申请。 有效值包含:

  • ServerNameOrFQDN\Thumbprint
  • Thumbprint

您可以使用 Get-ExchangeCertificate cmdlet 查找指纹值。

你无法把这个参数和服务器参数一起使用。

指纹参数,而非标识参数,是这个cmdlet的位置参数。 因此,当你指定一个指纹值本身时,此命令将该值用于拇指值参数。

Type:ExchangeCertificateIdParameter
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-Password

Password 参数指定导出的证书文件中私钥或信任链的密码。 您必须知道密码,才能在另一个服务器上导入所导出的证书文件。

可以使用以下方法作为此参数的值:

  • (ConvertTo-SecureString -String '<password>' -AsPlainText -Force).
  • 在运行此命令之前,请将密码存储为变量 (例如 $password = Read-Host "Enter password" -AsSecureString) ,然后使用变量 ($password 值) 。
  • (Get-Credential).password 运行此命令时,系统会提示安全输入密码。
Type:SecureString
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-Server

服务器参数指定要运行此命令的Exchange服务器。 可以使用唯一标识该服务器的任何值。 例如:

  • 名称
  • FQDN
  • 可分辨名称 (DN)
  • Exchange 旧版 DN

Exchange 旧版 DN

此参数不能与 Identity 参数一起使用,但可以与 Thumbprint 参数一起使用。

Type:ServerIdParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-Thumbprint

Thumbprint 参数指定要导出的证书或证书申请。 您可以使用 Get-ExchangeCertificate cmdlet 查找指纹值。

指纹参数,而非标识参数,是这个cmdlet的位置参数。 因此,当你指定一个指纹值本身时,此命令将该值用于拇指值参数。

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

-WhatIf

WhatIf 开关模拟命令操作。 可以使用此开关在不实际应用将会发生的更改的情况下预览这些更改。 不必为此开关指定值。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False
Applies to:Exchange Server 2010, Exchange Server 2013, Exchange Server 2016, Exchange Server 2019

输入

Input types

若要了解此 cmdlet 接受的输入类型,请参阅 cmdlet 的输入和输出类型。 如果 cmdlet 的"输入类型"字段为空,则表明此 cmdlet 不接受输入数据。

输出

Output types

若要了解此 cmdlet 接受的返回类型(亦称为"输出类型"),请参阅 cmdlet 的输入和输出类型。 如果"输出类型"字段为空,则表明此 cmdlet 不返回任何数据。