了解 TLS 证书

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2016-11-28

在加密术语中,由 New-ExchangeCertificate cmdlet 生成的证书和相关私钥是 TLS 密钥。New-ExchangeCertificate cmdlet 允许指定有关证书的元数据,以便不同服务可以使用相同的证书和私钥。在为使用 TLS 的 Exchange 服务创建证书或证书请求之前,应当了解被证书用于 SSL 和 TLS 服务的元数据。此元数据在生成的证书中称为“字段”。

若要查看特定计算机上的计算机证书的字段,可以在 Exchange 命令行管理程序中使用 Get-ExchangeCertificate cmdlet。另外,可以在 Microsoft 管理控制台 (MMC) 中使用证书管理器管理单元。

若要了解与 TLS 证书相关的管理任务,请参阅证书

目录

证书用于 TLS 服务的字段

证书选择

创建 TLS 证书

引用

如果使用 New-ExchangeCertificate cmdlet 从第三方或其他公钥基础结构 (PKI) 证书颁发机构 (CA) 那里生成证书请求,请确保验证 CA 需要哪些证书字段和证书格式。

这一节解释最重要的证书字段,并为生成证书和证书请求提供某些最佳实践。

TLS 证书的主题名称是 DNS 感知的服务所使用的字段。主题名称字段将证书绑定到特定的服务器名称或域名。

主题名称是一个 X.500 可分辨名称,由一个或多个相对可分辨名称(也称为 RDN)组成。下表列出了标识组织或服务器实体的常用相对可分辨名称。

 

名称 缩写 类型 最大大小 频率 在证书\请求中的推荐最大大小 在主题中的顺序

国家/地区

C

ASCII

2

1\1

1

域组件

DC

ASCII

255

很多

1

省/市/自治区

S

Unicode

128

1

2

位置

L

Unicode

128

1

3

组织

O

Unicode

64

1\1

4

组织单位

OU

Unicode

64

很多\很多

5

常用名

CN

Unicode

64

很多\1

6

国家/地区代码是 ISO 3166-1 代码。有关详细信息,请参阅英语国家名称和代码元素(英文)

按照约定,域组件和国家/地区是互斥的。最佳做法是按国家/地区引用名称,或按域名系统 (DNS) 名称引用名称。而且应注意,域组件的最大大小(255 个字符)是所有域组件值的总计。

重要重要说明:
尽管证书可以有多个公用名字段,但某些服务是基于只有一个公用名的假定实现的。因此,多个公用名会导致互操作性问题。建议所创建的证书或证书请求只包含一个公用名。

当使用 New-ExchangeCertificate cmdlet 创建证书请求时,主题名称表示为由一系列逗号分隔的名称组成的一个参数。每个名称均以相对可分辨名称的缩写进行标识。例如,以下主题名称表示国家/地区 = US、组织 = Contoso Corp、公用名 = mail1.contoso.com

-SubjectName "C=US o=contoso corp, CN=mail1.contoso.com"

可以代表相同服务器的其他主题名称的示例包括:

-SubjectName  "O=contoso corp, CN=mail1.contoso.com"
-SubjectName "DC=contoso, DC=com, CN=mail1.contoso.com"
-SubjectName "DC= contoso, DC=com, O=contoso corp, CN=mail1.contoso.com"

如果有一个用于发送 SMTP 邮件的已注册的 DNS 名称,那么最好的做法是使用域组件约定和 DNS 名称作为证书名称,例如,DC=contoso,DC=com,CN=mail1.contoso.com。

但是,为 CA 提供程序生成证书请求时,必须理解 CA 的“主题名称”字段要求以及您独有的 PKI 需要。在某些情况下,可能必须使用国家/地区代码(“C”)。在这种情况下,必须向 X.500 注册机构注册相对可分辨名称。

如果主题名称包含非 ASCII 字符,则可以输入 SubjectName 参数作为包含在引号内的可分辨名称,如下所示:

-SubjectName"C=ES,O=Diversión de Bicicleta,CN=mail1。DiversiondeBicicleta.com"

按照约定,公用名可以包含完全限定的域名 (FQDN)。尽管此做法被普遍使用,但请注意使用此方法时需注意以下两个问题。

第一,公用名字段的最大大小是 64 个字符。它的字符数少于 FQDN 的最大大小。因此,对于大于 64 个字符的 FQDN,必须将域名放在“主题备用名称”中。DomainName 参数是映射到所生成证书中的“主题备用名称”的参数。

第二,FQDN 只能使用 ASCII 字符集的一个子集。但是,公用名 (CN) 支持 Unicode。因此,可以用看起来像 DNS 名称但却是无效 DNS 名称的 CN 来创建有效证书。如果 CN 包含非 ASCII 字符,则要在证书 CN 中查找 FQDN 的软件将无法返回正确的结果。例如,如果创建主题名称为 CN=mail.mïcrosoft.com 的证书,则不会将该名称视为 FQDN,因为该名称包含 Unicode 字符(带读音符号的 ï 字符 (x00ef))。从表面上看,Unicode CN 很容易被误认为是 FQDN,因为带读音符号的 ï 字符 (x00ef) 与 ASCII i (x0069) 之间的差异很小。Exchange 证书任务不要求也不强制主题 CN 是有效的 FQDN。默认情况下,这意味着 cmdlet 将服务器的 FQDN 作为默认 CN。

对于 TLS,证书必须包含 DNS 名称,因为 TLS 依赖于 DNS 解析。客户端根据希望连接的 DNS 名称来验证所连接服务器的 DNS 名称。通过 HTTPS 连接到网站的 Web 浏览器和通过 Internet 或 Intranet 传输电子邮件的 SMTP 服务器均属这种情况。

由于以下原因,单个服务器可能支持多个 DNS 名称:

  • SMTP 服务器支持多个接受域

  • 客户端可以用服务器名称、域名、FQDN 本地名称或负载平衡名称来访问电子邮件服务器。

建立 TLS 连接时,如果客户端发现正在查找的名称,该客户端将忽略证书中的其他名称。可以将多个域名和服务器名称添加到 TLS 证书的“主题备用名称”字段中。通过使用 New-ExchangeCertificate cmdlet 的 DomainName 参数,可以创建包含多个“主题备用名称”的证书。 DomainName 参数是多值参数,因此可以接受多个名称。

X.509 证书可以在主题备用名称 (SubjectAltName) 证书扩展中包含零个、一个或更多个 DNS 名称。SubjectAltName 扩展中的 DNS 名称应当与 DNS 名称的限制准确匹配。它们不得超过 255 个字符,并且必须由 A-Z、a-z、0-9 和短横线 (-) 组成。

域安全性功能的证书名称匹配逻辑将检查接收的证书中的域名与向该域发送邮件时的域名是否相匹配。例如,考虑收件人域 woodgrovebank.com 的 FQDN。证书名称匹配逻辑将搜索证书中的所有 DNS 名称,只要有一个 DNS 名称相匹配,将认定该证书是与指定域相匹配的证书。

在此示例中,证书名称匹配逻辑接受与域完全匹配的证书,例如 woodgrovebank.com。同时,还支持在证书中使用通配符域名,以便接受 DNS 名称为 *.woodgrovebank.com 的证书作为相匹配的证书。有关通配符域名的详细信息,请参阅本主题后面部分的“通配符域名”。

证书名称匹配逻辑还将在一个节点深度的范围内搜索 DNS。因此,也接受 mail1.woodgrovebank.com 作为 woodgrovebank.com 的匹配项。但是,不接受深度超过两个节点的 DNS 名称。因此,例如,不会接受 mail1.us.woodgrovebank.com 作为 woodgrovebank.com 的匹配项。

为通过 Internet 执行 SMTP TLS 的边缘传输服务器创建证书或证书请求时,应当包括在请求中的域名集是:

  • 服务器的完全限定的 Internet 域名   此名称可能不同于在边缘传输服务器和集线器传输服务器之间使用的内部 FQDN,应当与在 Internet(公用)DNS 服务器上发布的 A 记录相匹配。该名称应当作为 CN 在 New-ExchangeCertificate cmdlet 的 SubjectName 参数中输入。

  • 组织的所有接受域名   使用 New-ExchangeCertificate cmdlet 的 IncludeAcceptedDomains 参数可以填充结果证书的主题备用名称。

  • 连接器的 FQDN(如果它未被以前的项覆盖)   使用 New-ExchangeCertificate cmdlet 的 DomainName 参数可以填充结果证书的主题备用名称。

通配符域名是表示多个子域的特殊类型的域名。通配符域名可以使证书简化,这是因为单个通配符域名可以表示该域的所有子域。您可以在 DNS 节点中用星号字符 (*) 表示它们。例如,*.contoso.com 表示 contoso.comcontoso.com 的所有子域。使用通配符创建所有接受域的证书或证书请求时,可以极大地简化请求。

Exchange 遵循不同的证书选择过程,具体取决于 SMTP 连接的类型。

集线器传输服务器彼此通信或与组织中的边缘传输服务器通信时,将使用匿名 TLS 证书。有关详细信息,请参阅选择入站匿名 TLS 证书出站匿名 TLS 证书选择

如果 SMTP 主机或客户端与边缘传输服务器或者集线器传输服务器连接,则将使用 STARTTLS 证书选择过程。有关详细信息,请参阅入站 STARTTLS 证书的选择

Exchange 2010 会在安装期间创建自签名的证书,所生成的证书使用安装时 Exchange 已知的所有服务器和域名。您可以克隆此证书以在其他服务器上使用。也可以用第三方 CA 颁发的证书来替换此证书。以下主题提供了每个任务的分步操作说明:

有关加密和证书的技术及概念的详细信息,请参阅以下出版物:

  • Windows Server 2008 PKI 和证书安全性(英文)

  • Housley、Russ 和 Tim Polk。规划 PKI:部署公钥基础结构的最佳实践指南。纽约:John Wiley & Son, Inc.,2001。

  • Schneier, Bruce。应用密码学:协议、算法和 C 源代码,第二版。纽约:John Wiley & Son, Inc.,1996。

 © 2010 Microsoft Corporation。保留所有权利。
显示: