如何配置域安全性的相互 TLS

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2009-04-20

本主题将介绍如何使用 Exchange 命令行管理程序来为域安全性配置相互传输层安全性 (TLS),TLS 是 Microsoft Exchange Server 2007 和 Microsoft Office Outlook 2007 中可提供比 S/MIME 开销相对低的替代方案和其他邮件级安全解决方案的功能集。

出于演示目的,本主题将介绍了虚拟公司 Contoso 的 Exchange 管理员如何配置其 Exchange 2007 环境,以便与其合作伙伴 Woodgrove Bank 交换域安全电子邮件。在此示例中,Contoso 希望使用相互 TLS 来确保与 Woodgrove Bank 往来的所有电子邮件都得到保护。此外,Contoso 希望配置域安全性功能,以便在无法使用相互 TLS 时拒绝与 Woodgrove Bank 往来的所有邮件。

Contoso 有一个用于生成证书的内部公钥基础结构 (PKI)。PKI 的根证书已被一个主要的第三方证书颁发机构 (CA) 签名。Woodgrove Bank 使用相同的第三方 CA 来生成其证书。因此,Contoso 和 Woodgrove Bank 都信任对方的根 CA。

为了设置相互 TLS,Contoso 的 Exchange 管理员执行以下步骤:

  1. 生成 TLS 证书的证书请求。

  2. 将证书导入到边缘传输服务器。

  3. 配置出站域安全性。

  4. 配置入站域安全性。

  5. 测试邮件流。

开始之前

相互 TLS 的配置有以下要求:

  • 使用 Set-TransportConfig cmdlet 和使用 New-SendConnector cmdlet(如果尚未配置发送连接器)访问内部 Exchange 2007 服务器。

  • 访问运行 ExchangeCertificate cmdlet 的边缘传输服务器计算机。

通常,对域安全功能进行的不使用 ExchangeCertificate cmdlet 的配置更改应当在组织内进行,并使用 Microsoft Exchange EdgeSync 服务将这些更改同步到边缘传输服务器。

使用 ExchangeCertificate cmdlet 导入和配置 TLS 证书时,必须在正在配置的边缘传输服务器上运行这些 cmdlet。若要在安装了边缘传输服务器角色的计算机上运行 ExchangeCertificate cmdlet,必须使用作为该计算机的本地管理员组成员的帐户进行登录。

要运行 Set-TransportConfig cmdlet,必须为您使用的帐户委派 Exchange 组织管理员角色。

要运行 New-SendConnector cmdlet,必须为您使用的帐户委派该计算机的 Exchange Server 管理员角色和本地管理员组。

有关管理 Exchange 2007 所需的权限、角色委派以及权利的详细信息,请参阅权限注意事项

本主题假设您已阅读并理解创建 TLS 证书或证书请求

为了实现域安全性,必须完全部署 Microsoft Exchange EdgeSync 服务。

必须配置计算机和 PKI 环境以便执行证书验证和证书撤消列表检查,才能在边缘传输服务器上成功运行相互 TLS。有关详细信息,请参阅如何启用边缘传输服务器上的 PKI 以确保域安全

生成 TLS 证书的证书请求

如本主题上文中所述,Contoso 有一个从属于第三方 CA 的内部 PKI。在此示例中,从属是指 Contoso 在其公司基础结构中部署的 CA 包含已由公开的第三方 CA 签名的根证书。默认情况下,公开的第三方 CA 是 Microsoft Windows 证书存储中的受信任根证书之一。因此,在其受信任的根存储中包括相同的第三方 CA 并连接到 Contoso 的任何客户端都可以向 Contoso 提供的证书进行身份验证。

Contoso 有两个需要 TLS 证书的边缘传输服务器:mail1.contoso.com 和 mail2.mail.contoso.com。因此,Contoso 电子邮件管理员必须生成两个证书请求,每个服务器对应一个证书请求。

以下步骤显示管理员用于生成以 base64 编码的 PKCS#10 证书请求的命令。Contoso 管理员必须运行两次此命令:一次对 CN=mail1.contoso.com 运行,另一次对 CN=mail2.mail.contoso.com 运行。

note注意:
结果证书的主题名称中的公用名 (CN) 分别是 mail1.contoso.com 和 mail2.mail.contoso.com。主题备用名称包含“mail.contoso.com”,这是为 Contoso 配置的一个接受域的完全限定的域名 (FQDN)。

创建 TLS 证书请求

  • 运行以下命令:

    New-ExchangeCertificate -GenerateRequest -FriendlyName "Internet certificate" -Path c:\certificates\request.p7c -SubjectName "DC=com,DC=Contoso,CN=mail1.contoso.com"  -DomainName mail.contoso.com
    

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

important要点:
您创建的证书或证书请求的特定详细信息取决于许多变量。如果您正在生成请求,请确保与将颁发证书的 CA 或 PKI 管理员密切配合。有关如何创建 TLS 的证书请求的详细信息,请参阅创建 TLS 证书或证书请求

传输证书和相关密钥

当您从 PKI 或 CA 提供者那里收到证书后,请将所颁发的证书转换为 PFX (PKCS#12) 文件,以便将其作为灾难意外事故的一部分进行备份。PFX 文件包含证书和相关密钥。在某些情况下,您可能需要传输证书和密钥以将其移动到其他计算机。例如,如果您有多个边缘传输服务器,并希望在这些服务器中发送和接收“域安全”电子邮件,则您可以创建一个用于所有服务器的证书。在这种情况下,您必须在每个边缘传输服务器上为 TLS 导入并启用该证书。

只要将 PFX 文件的副本安全存档,就始终可以导入和启用该证书。PFX 文件包含私钥,因此通过将该文件保存在安全位置的存储媒体中进行物理保护非常重要。

了解 Import-ExchangeCertificate cmdlet 总是将从 PFX 导入的私钥标记为不可导出很重要。该功能是特意设计的。

在使用 Microsoft 管理控制台 (MMC) 中的证书管理器管理单元来导入 PFX 文件时,可以指定私钥的可导出性和强密钥保护。

important要点:
不要对用于 TLS 的证书启用强密钥保护。用户每次访问私钥,强密钥保护都会提示用户。对于域安全,此处的“用户”是指边缘传输服务器上的 SMTP 服务。

将证书导入边缘传输服务器

管理员生成证书请求之后,使用该请求为服务器生成证书。结果证书必须作为单个证书或证书链进行颁发,并复制到合适的边缘传输服务器。

important要点:
要导入证书,则必须使用 Import-ExchangeCertificate cmdlet。有关详细信息,请参阅 Import-ExchangeCertificate
important要点:
不要在 Exchange 服务器上使用 MMC 中的证书管理器管理单元为 TLS 导入证书。如果在 Exchange 服务器上使用证书管理器管理单元导入证书,则不能将在此步骤中创建的请求绑定到所颁发的证书。因此 TLS 可能会失败。您可以使用证书管理器管理单元将存储为 PFX 文件的证书和密钥导入本地计算机存储。导入证书后,您可以通过运行 Enable-ExchangeCertificate cmdlet 为 TLS 启用证书。

将证书导入边缘传输服务器时,还必须为简单邮件传输协议 (SMTP) 服务启用证书。Contoso 管理员在每个边缘传输服务器上运行以下命令,对每个证书分别运行一次。

在边缘传输服务器上导入和启用域安全性的 TLS 证书

  • 运行以下命令:

    Import-ExchangeCertificate -Path c:\certificates\import.pfx | Enable-ExchangeCertificate -Services SMTP
    

该命令通过管道传输 Enable-ExchangeCertificate cmdlet 来导入和启用 TLS 证书。

还可以在导入证书后将其启用。若要导入证书,请运行以下命令:

Import-ExchangeCertificate -Path c:\certificates\import.pfx 

然后,将指纹复制到 Windows 剪贴板。若要显示您刚刚导入的证书的指纹,请运行以下命令:

Get-ExchangeCertificate |FL

将数据从“指纹”字段复制到 Windows 剪贴板。

最后,请运行以下命令启用证书:

Enable-ExchangeCertificate -Thumbprint AB493A0C9A6C0327162FE04EF74609CB8FB7FE24 -Services SMTP

配置出站域安全性

为了配置出站域安全性,必须执行三个步骤:

  1. 运行 Set-TransportConfig cmdlet 以指定要用来发送域安全电子邮件的域。

  2. 运行 Set-SendConnector cmdlet 以便在相应的连接器(该连接器将向您要用于发送域安全电子邮件的域发送邮件)上设置 DomainSecureEnabled 属性。

  3. 运行 Set-SendConnector cmdlet 以验证以下事项:

    • 发送连接器使用域名系统 (DNS) 路由邮件,该发送连接器将把电子邮件发送到要用于发送域安全电子邮件的域。

    • FQDN 与正用于域安全性的证书的主题名称匹配或主题备用名称匹配。

因为以上三个步骤中所做的更改是全局性的,所以必须在内部 Exchange 服务器上进行更改。所做的配置更改将通过 Microsoft Exchange EdgeSync 服务复制到边缘传输服务器。

在传输配置中指定发件人域

指定要用于发送域安全电子邮件的域是相对简单的事情。Contoso 管理员可以在内部 Exchange 2007 服务器上运行以下命令:

Set-TransportConfig -TLSSendDomainSecureList woodgrovebank.com

有关详细信息,请参阅 Set-TransportConfig

note注意:
TLSSendDomainSecureList 参数接受多值的域名列表。Set-TransportConfig 命令会将 TLSSendDomainSecureList 的整个值替换为在 cmdlet 中提供的新值。因此,如果要添加新的域,则您提供的值必须包括现有列表和新域。

配置发送连接器

Contoso 将使用其默认 DNS 路由发送连接器向其伙伴发送域安全电子邮件。由于其默认 DNS 路由发送连接器是默认 Internet 发送连接器,因此它使用 DNS 来路由邮件,而不使用智能主机。FQDN 已设置为 mail.contoso.com。由于 Contoso 管理员创建的证书会将 New-ExchangeCertificateDomainName 参数设置为 mail.contoso.com,发送连接器可以在不必提供其他配置的情况下使用这些证书。

如果您配置了用于测试的子域,则可能必须更新发送连接器的 FQDN 以便与创建的证书匹配(例如,subdomain.mail.contoso.com)。另一方面,如果您创建的证书在“主题”或“主题备用名称”字段中包含子域,则不必更新发送连接器的 FQDN。

因此,Contoso 管理员必须对发送连接器进行的唯一配置是设置 DomainSecureEnabled 参数。为此,Contoso 管理员需要在内部 Exchange 2007 服务器上对“Internet”发送连接器运行以下命令:

Set-SendConnector Internet -DomainSecureEnabled:$True

有关详细信息,请参阅 Set-SendConnector

还可以使用 Exchange 管理控制台在发送连接器上启用域安全电子邮件。

使用 Exchange 管理控制台为域安全性配置发送连接器

  1. 在集线器传输服务器上,打开 Exchange 管理控制台,单击“组织配置”,单击“集线器传输”,然后在结果窗格中,单击“发送连接器”选项卡。

  2. 选择向相应域(要从该域发送域安全电子邮件)发送邮件的发送连接器,然后在操作窗格中,单击“属性”。

  3. 在“网络”选项卡上,选择“启用域安全性(相互验证 TLS)”,单击“应用”,然后单击“确定”。

配置入站域安全性

若要启用入站域安全性,必须执行两个步骤:

  1. 运行 Set-TransportConfig cmdlet 以指定要从中接收域安全电子邮件的域。

  2. 在边缘传输服务器上,使用 Exchange 命令行管理程序或 Exchange 管理控制台对要从中接收域安全电子邮件的接收连接器启用域安全性。由于域安全性要求相互 TLS 身份验证,因此还必须对接收连接器启用 TLS。

在传输配置中指定收件人域

指定要用于接收域安全电子邮件的域是相对简单的事情。若要指定该域,Contoso 管理员可以在内部 Exchange 2007 服务器上运行以下命令:

Set-TransportConfig -TLSReceiveDomainSecureList woodgrovebank.com

有关详细信息,请参阅 Set-TransportConfig

note注意:
TLSReceiveDomainSecureList 参数接受多值的域名列表。Set-TransportConfig 命令会将 TLSReceiveDomainSecureList 参数的整个值替换为 Set-TransportConfig cmdlet 提供的新值。因此,如果要添加新的域,则您提供的值必须包括现有列表和新域。

配置接收连接器

对于接受来自要从其接收域安全电子邮件的域的邮件的每个边缘传输服务器,必须在其上配置接收连接器。Contoso 环境的配置为在两个边缘传输服务器上有单个 Internet 接收连接器(其标识为 Inet)。因此,若要在与 Woodgrove Bank 发送或接收邮件的同时启用 TLS,则 Contoso 管理员必须确保在两个边缘传输服务器的默认 Internet 接收连接器上都启用了 TLS。

使用 Exchange 命令行管理程序配置域安全性的接收连接器

  • 在边缘传输服务器上,运行以下命令:

    Set-ReceiveConnector Inet -DomainSecureEnabled:$True -AuthMechanism TLS
    

有关语法和参数的详细信息,请参阅 Set-ReceiveConnector

使用 Exchange 管理控制台配置域安全性的接收连接器

  1. 在边缘传输服务器上,打开 Exchange 管理控制台,单击“边缘传输”,然后在结果窗格中,单击“接收连接器”选项卡。

  2. 选择从您要从其接收域安全电子邮件的域接受邮件的接收连接器,然后在操作窗格中,单击“属性”。

  3. 在“身份验证”选项卡上,选择“传输层安全性 (TLS)”和“启用域安全性(相互验证 TLS)”,然后单击“确定”。

应当知道,指定身份验证机制为 TLS 并不能对所有入站连接强制应用 TLS。

由于以下原因,TLS 将强制应用于来自 Woodgrove Bank 的连接:

  • Set-TransportConfig cmdlet 中的 TLSReceiveDomainSecureList 参数指定 Woodgrove Bank。

  • 在接收连接器上将 DomainSecureEnabled 参数设置为 $True

如果发送系统支持 TLS,则未在 Set-TransportConfig cmdlet 的 TLSReceiveDomainSecureList 参数上列出的其他发件人将只能使用 TLS。

note注意:
对接收连接器启用域安全性的副作用是:系统将在 TLS 协商期间请求客户端证书。如果发送邮件的客户端所在的域不在安全域列表中,则不要求该客户端提交证书。

测试域安全邮件流

配置域安全电子邮件之后,可通过查看性能日志和协议日志来测试连接。已成功在域安全邮件流路径上通过身份验证的邮件将作为“域安全”邮件显示在 Outlook 2007 中。

性能计数器

域安全性功能包括“MSExchange 安全邮件传输”下面的以下性能计数器:

  • Domain-Secured Messages Received(已接收到的域安全邮件)

  • Domain-Secured Messages Sent(已发送的域安全邮件)

  • Domain-Secured Outbound Session Failures(域安全出站会话失败)

可以用这些性能计数器为域安全邮件流新建计数器日志文件,以监视发送和接收的邮件数,还可以监视失败的相互 TLS 会话。有关如何创建和配置计数器日志的详细信息,请参阅“性能日志和警报”MMC 管理单元中附带的帮助文件。

协议日志

可以查看发送和接收协议日志,以确定 TLS 协商是否已成功。成功的 TLS 协商将生成类似下例的日志。

要查看详细的协议日志,您必须在组织用于收发域安全电子邮件的连接器上将协议日志记录级别设置为 Verbose

使用 Exchange 命令行管理程序针对 verbose 协议日志记录配置接收连接器

  • 在边缘传输服务器上,运行以下命令:

    Set-ReceiveConnector Inet -ProtocolLoggingLevel Verbose
    

    其中 Inet 是启用了域安全电子邮件的接收连接器的名称。

使用 Exchange 命令行管理程序针对 verbose 协议日志记录配置发送连接器

  • 在边缘传输服务器上,运行以下命令:

    Set-SendConnector Internet -ProtocolLoggingLevel Verbose
    

    其中 Internet 是启用了域安全电子邮件的发送连接器的名称。

发送日志示例

<220 edgedns3 ESMTP Microsoft ESMTP MAIL Service, Version: 8.0.647.0; Tue, 29 Aug 2006 04:22:00 -0700 (PDT)
>EHLO edgea36.dns.contoso.com
<250-edgedns3 Hello woodgrove.com [192.168.0.2], pleased to meet you
<250-ENHANCEDSTATUSCODES
<250-PIPELINING
<250-EXPN
<250-VERB
<250-8BITMIME
<250-SIZE
<250-DSN
<250-ETRN
<250-STARTTLS
<250-DELIVERBY
<250 HELP
>STARTTLS
<220 2.0.0 Ready to start TLS
*Sending certificate
*CN=edgea36, Certificate subject
*CN=edgea36, Certificate issuer name
*CA2EDF2487C6F09B4E413FD3812A7F89, Certificate serial number
*E8DA062786FD097DD8D79FF10C583CC23AD64F6C, Certificate thumbprint
*edgea36;edgea36.dns.contoso.com, Certificate alternate names
*Received certificate
*CN=smi.extest.contoso.com, OU=Contoso, O=Corp, L=Spokane, S=WA, C=US, Certificate subject
*CN=ExCertDom EntSub Issuing CA v1.0, DC=ExCertDom, DC=ExTest, DC=Contoso, DC=Com, Certificate issuer name
*446DD186000A00002819, Certificate serial number
*DC27B5F8657F84B15B5004BE63CE482721871582, Certificate thumbprint
*smi.extest.contoso.com, Certificate alternate names
>EHLO edgea36.dns.contoso.com
<250-edgedns3 Hello woodgrove.com [192.168.0.2], pleased to meet you
<250-ENHANCEDSTATUSCODES
<250-PIPELINING
<250-EXPN
<250-VERB
<250-8BITMIME
<250-SIZE
<250-DSN
<250-ETRN
<250-DELIVERBY
<250 HELP
*08C895F533E837EC;2006-08-28T22:37:53.323Z;1, sending message
>MAIL FROM:<user@example.com> SIZE=614
>RCPT TO:<root@smi.extest.contoso.com>
<250 2.1.0 <user@example.com>... Sender ok
<250 2.1.5 <root@smi.extest.contoso.com>... Recipient ok
>DATA
<354 Enter mail, end with "." on a line by itself
<250 2.0.0 k7TBM0BZ000043 Message accepted for delivery
>QUIT
<221 2.0.0 edgedns3 closing connection

接收日志示例

>220 edgea36 Microsoft ESMTP MAIL Service, Version: 8.0.647.0 ready at Mon, 28 Aug 2006 15:37:53 -0700
<EHLO edgedns3
>250-edgea36.dns.contoso.com Hello [192.168.0.1]
>250-SIZE 15728640
>250-PIPELINING
>250-DSN
>250-ENHANCEDSTATUSCODES
>250-STARTTLS
>250-AUTH
>250-8BITMIME
>250-BINARYMIME
>250 CHUNKING
<STARTTLS
>220 2.0.0 SMTP server ready
*Sending certificate
*CN=edgea36, Certificate subject
*CN=edgea36, Certificate issuer name
*CA2EDF2487C6F09B4E413FD3812A7F89, Certificate serial number
*E8DA062786FD097DD8D79FF10C583CC23AD64F6C, Certificate thumbprint
*edgea36;edgea36.dns.contoso.com, Certificate alternate names
*Received certificate
*CN=smi.extest.contoso.com, OU=Contoso, O=Corp, L=Spokane, S=WA, C=US, Certificate subject
*CN=ExCertDom EntSub Issuing CA v1.0, DC=ExCertDom, DC=ExTest, DC=Contoso, DC=Com, Certificate issuer name
*446DD186000A00002819, Certificate serial number
*DC27B5F8657F84B15B5004BE63CE482721871582, Certificate thumbprint
*smi.extest.contoso.com, Certificate alternate names
<EHLO edgedns3
>250-edgea36.dns.contoso.com Hello [192.168.0.1]
>250-SIZE 15728640
>250-PIPELINING
>250-DSN
>250-ENHANCEDSTATUSCODES
>250-AUTH
>250-8BITMIME
>250-BINARYMIME
>250 CHUNKING
<MAIL From:<user@smi.extest.contoso.com> SIZE=16
*08C895F533E837EC;2006-08-28T22:37:53.323Z;1, receiving message
>250 2.1.0 user@smi.extest.contoso.com Sender OK
<RCPT To:<user@woodgrove.com>
>250 2.1.5 user@woodgrove.com Recipient OK
<DATA
>354 Start mail input; end with <CRLF>.<CRLF>
>250 2.6.0 <200608281121.k7SBHYi0004586@edgedns3> Queued mail for delivery
<QUIT
>221 2.0.0 Service closing transmission channel

有关如何查看协议日志的详细信息,请参阅如何配置协议日志记录

有关如何在 Exchange 2007 中管理域安全性的详细信息,请参阅管理域安全性

有关如何配置公钥基础结构的详细信息,请参阅 Best Practices for Implementing a Microsoft Windows Server 2003 Public Key Infrastructure(英文网页)。