「深入 Exchange 2013」09 证书

今儿咱们来聊Exchange里的证书,CAS与MBX角色都有用到证书的地方,只是CAS角色更依赖证书一些,在一台Exchange服务器刚刚安装完成的时候,安装程序会自动生成一张自签名证书,这张自签名证书往往并不满足咱们的需求,所以咱们一般会向企业CA再去针对Exchange所涉及到的多个IIS服务的DNS备用名称申请合适的额证书。

Exchange在哪些地方用到证书

1、 让客户端验证服务器的身份。这是最常规的用法,大多数管理员可能都碰到过证书名称不匹配引起的客户端报错。

2、 服务器去验证客户端或者设备的身份,也就是客户端证书验证。

3、
保护SMTP邮件传输,配合传输层加密协议(TLS)来加密SMTP连接。同组织内的Exchange服务器之间传递邮件默认应用了TLS连接,与组织之外的Exchange服务器同样也可以手动打开TLS选项。

4、 服务器与服务器之间的身份验证,也称为相互TLS,最常用于与Lync服务器集成。

在windows操作系统和一些应用上也会用到证书,比如用IPsec加密的,或者数字签名的Powershell脚本。咱们在这里就只说Exchange。需要提到的是,Exchange
2013目前还不能支持IIS8的集中证书存储功能,不知道Exchange 2016有没有改观。

如果你只是在内部网络里运行Exchange,压根没打算提供外部用户访问的话。只要你不怕麻烦去给客户端和ActiveSync设备统一安装一下,Exchange2013默认的自签名证书是完全够用的。对于加域的客户端比较简单,做一个GPO,将这张自签名证书下发到加域的PC的信任证书颁发机构里去,当然了,一张证书对应一台CAS服务器,有几台CAS服务器,就得把这几天CAS上的自签名证书全下发下去。这还是PC机,如果你碰上windows
phone那种手动装证书的,那可就…想象一下这个工作量吧…默认的自签名证书有效期为五年,还行,至少你忙乎了一阵可以管上五年时间。

但是当你有外部客户端访问需求的时候,这个可就真不行了。因为自签名的证书,并不被外部的客户端所信任(除非你说服他们都装上,类似一开始的12306)。

从哪里获得证书

Ok,看了上面的东西,你醒悟过来说咱不要用自签名证书,这时候你有两个选择,一是在域内启用Windows证书服务功能,然后构建企业内的PKI结构。二是去从第三方证书提供商(根证书授权的)买证书。每种方法都有自己的好处和坏处。

第三方的证书需要额外的金钱成本花费,一般企业的单域名证书在3000-6000一年不等(看厂商和种类)加一个域名则翻一倍,通配符域名的证书基本定价政策都是单域名价格x3。但是买了这种第三方的公网证书之后,你的域名就被纳入了互联网级的信任链,比方你买了VeriSign或者DigiCert,国内的什么WoSign,这些机构已经是被认为是默认信任的,换句话说,你可以在一台新装好的操作系统的证书存储里翻到这些机构的根CA证书。这样别的公司或者组织,或者外部的计算机和设备,就可以默认信任你的Exchange服务器,而不用做任何额外的设置了。

设置自有的PKI架构是完全免费的,因为它依靠windows
server自带的证书服务来运行,而且这样就让管理员完全管控了证书的签发,并且知道哪些证书是用来做啥的。出了问题也很好解决,你只需要重新签发一张正确的证书就可以了。而且如果你想在后期在环境内部署EFS或者是智能卡登陆,拥有自己的CA来干这些事可比用第三方证书简单的多。用自己架设的域内的CA,给每台Exchange服务器进行签发证书,只要是在域内的客户端默认都会安装域根CA的根证书,于是乎它们默认的也会信任Exchange服务器。然而外部的设备或者是客户端仍然需要安装,但是只用装一张,也就是你们内部域CA的根证书即可达到信任Exchange服务器的效果。当然如果你有钱也可以买通配符证书,让整个组织的服务器都被外部用户默认信任。这依然涉及到成本问题,而且非常高,如果有需要,就去各种证书网站上看看价格吧。

证书内容

不管以哪种方法签发了证书,SSL证书里都会包含公钥和私钥来为客户端和服务器之间的内容进行加密。CAS服务器提供一份公钥的拷贝给连接上来的客户端,客户端使用公钥加密通信,而CAS能够使用其自己的私钥解密通信,这样客户端和服务器之间就建立起了一个安全通道。接着,客户端生成一个共享的key,并且使用CAS的公钥来加密这个共享Key,CAS能够用私钥解密出这个共享的Key,然后两边约定使用这个共享的Key来加密信息进行交流,注意这里不光是客户端和CAS使用的公钥和私钥,还存在一个共享的Key。这样哪怕有人截取了数据,并且拿到了CAS的公钥,它依然无法获得里边儿的内容,因为他没有CAS的私钥,拿不到这个共享Key。(具体的SSL
handshake过程请参考:https://support.microsoft.com/en-us/kb/257591

除了公钥和私钥这些事,证书还有其他的一些附加的嵌入属性,包括有效期,主体名称,其他的使用者可选名称(subject alternative names
SANS)。当你为一台服务器请求了证书,CA会在签发这张证书的时候,将这些嵌入属性进行数字签名,以保证其在证书被签发之后不被篡改。这就意味着,如果你在证书都生成好了之后,发现证书里头有些信息存在问题,那就只能老老实实重新申请一张吧。

规划证书的建议

对于这个问题,我这儿有以下几个建议

1、 最小化你所使用的证书数量,你使用的证书越多,花费越高,或者说,环境变得越复杂

2、
使用SAN证书,常规的证书只包含一个域名,但是SAN证书,也就是使用者可选名称里可以包含多个域名。这样就可以减少证书的数量,你完全可以用一张SAN证书来涵盖所有的Exchange
2013服务的命名空间,比如将autodiscover.contoso.com,mail.contoso.com,cas01.contoso.com,cas02.contoso.com等等集合在一张SAN证书里。

3、 不要在证书的主要名称里用计算机名,考虑周全,不要写计算机名,而是用负载均衡阵列的名字,也就是一个服务器场统一访问点的FQDN

4、 记住你可以对不同的服务应用不同的证书

5、 部署vista SP1或者更新的客户端,这样你就不用担心由于客户端的兼容性引起的各种关于证书主体名称的问题了。

请求并应用证书

微软建议使用EAC内置的证书管理工具来申请和应用证书,然而不像Exchange
2010那样,在最后你不会看到PowerShell执行的具体细节。具体的步骤这里就不多介绍,使用过EAC和Exchange2010的同学对比一下就会发现微软在易用性上还是下了些功夫的。同样的也可以使用PowerShell命令来申请证书,比如我这里要申请一张多个使用者替代名称的证书:

New-ExchangeCertificate –GenerateRequest –Path ‘c:\temp\cert.req’ 
–SubjectName ‘c=CN;o=contoso;cn=mail.contoso.com’ –domainname ‘mail.contoso.com, 
autodiscover.contoso.com, legacy.contoso.com’ –PrivateKeyExportable $True

结合命名空间,再多说一些

还记得之前那篇关于命名空间的文章,我们把证书和命名空间结合起来,来看看以下三个场景的证书规划

场景一:

Contoso在Redmond和Portland有两个办公室,目前的环境是Exchange2007与Exchange2013共存的情况,且为两个2013的MBX部署了双Active的DAG,以增加站点恢复能力。客户端不用担心连接到了哪一个数据中心都可以正确的拿到邮箱数据,并且保证不存在连接上的单点故障,负载均衡器上则继续开启SSL卸载。

那么对于以上需求,Contoso需要以下命名空间

1、 autodiscover.contoso.com –自动发现

2、 legacy.contoso.com –Ex2007客户端在共存条件下必须的命名空间

3、 mail.contoso.com --OWA,ActiveSync,OutlookAnywhere主要命名空间

4、 smtp.contoso.com—IMAP客户端使用

5、 imap.contoso.com—IMAP客户端使用

那么我们就有了以下符合非绑定模型的命名空间,(开启了SSL卸载,负载均衡可以在7层上面对各协议进行健康检测和负载均衡。)

场景二:

Contoso公司在Redmond和Bel
Air各有一个数据中心,目前是Exchange
2010与Exchange2013共存的情况,Contoso公司要求用户连接到自己最近的客户端,除非是发生了故障才进行切换,并且在负载均衡设备上禁用SSL
卸载(那么就得通过每服务一个命名空间的方式来解决健康检测的问题)。

为了符合以上需求,我们需要以下命名空间

1、 autodiscover.contoso.com

2、 mail-wa.contoso.com Redmond数据中心的OWA服务的主要命名空间

3、 mail-md.contoso.com Bel Air数据中心的OWA服务的主要命名空间

4、 mailfb-wa.contoso.com Redmond数据中心的OWA服务的failback命名空间

5、 mailfb-md.contoso.com Bel Air数据中心的OWA服务的failback命名空间

6、 eas-wa.contoso.com -Redmond数据中心的EAS命名空间

7、 eas-md.contoso.com -BelAir数据中心的EAS命名空间

8、 oa-wa.contoso.com -Redmond的OutlookAnywhere

9、 oa-md.contoso.com -BelAir的OutlookAnywhere

10、 ews-wa.contoso.com - Redmond的Exchange Web Services

11、 ews-md.contoso.com

12、 oab-wa.contoso.com - Redmond的离线地址簿

13、 oab-md.contoso.com

这样咱们的方案就符合了绑定的命名空间的模型

场景三:

Contoso在Redmond和Portland有两个办公室,目前的环境是Exchange2007与Exchange2013共存的情况,且为两个2013的MBX部署了双Active的DAG,以增加站点恢复能力。客户端不用担心连接到了哪一个数据中心都可以正确的拿到邮箱数据,并且保证不存在连接上的单点故障,负载均衡器上关闭了SSL卸载。

那么满足了以上需求,我们需要以下命名空间

1、 autodiscover.contoso.com

2、 legacy.contoso.com

3、 mail.contoso.com

4、 oa.contoso.com

5、 ews.contoso.com

6、 oab.contoso.com

OK,证书我们就扯完了,目前为止一共是9篇文章,关于CAS前端部分基本告一段落,下一章开始咱们就聊聊Exchange 2013中的传输服务。

时间: 2024-10-13 12:18:04

「深入 Exchange 2013」09 证书的相关文章

「深入 Exchange 2013」05 Outlook Anywhere

这一章来给大家讲Outlook Anywhere,概念比较重要,但是容易混淆,大家得仔细阅读,仔细区分. RPC over HTTP/HTTPS 首先得理解,为何在Exchange 2013当中,仅支持Outlook Anywhere的Outlook MAPI客户端连接方式.早期版本的MAPI访问依赖的是TCP的RPC协议直接连接到MBX服务器,而Exchange2013则使用HTTPS封装的RPC协议.这就意味着,如果你在当前是Ex2007或者Ex2010的环境当中,再增加一台Ex2013的服

「深入 Exchange 2013」14 接收连接器

接收连接器在概念上要比发送连接器简单一点,每个接收连接器只用侦听来自你分配给它的ip地址和端口的请求,然后将SMTP会话传送出去即可.接收连接器使用权限组来决定哪些发送者被允许使用该连接器,权限组则是预先定义好的一系列安全主体对某个对象(当前场景下则是接收连接器)所拥有的权限,比如说是"任何有邮箱账户的用户"即Exchange Users,或者是"组织里的任何Exchange Server"即Exchange Servers.这种模型类似于NTFS权限模型,先把用户

「深入 Exchange 2013」15 TLS传输层安全

默认情况下,SMTP流量是不被加密的,这就导致在公网上进行邮件沟通就像是在广播一样,任何人拦截到该邮件都可以轻而易举的读取其内容.但是现实场景中有许多敏感信息是通过邮件来进行发送的,所以其中一种保护邮件安全的方法就是使用传输层安全协议(Transport Layer Security)来提供SMTP流量在传输中的加密,受TLS保护的SMTP流量可以让拦截/窃听者无法读取到SMTP流量的内容,但是它只提供传输过程中的保护,对于已经到达目标服务器,或者是在发件方本地服务器的邮件则没法提供保护. 有两

「深入 Exchange 2013」08 代理、重定向、共存

回顾一下以前讲过的东西,CAS并不直接为客户端提供邮箱连接,而是以两种方式来保证客户端连接到正确的MBX:代理或和重定向.在代理连接当中,CAS接收客户端连接并且转发给恰当的服务器:在重定向连接当中,CAS仅仅是回应客户端一个恰当的服务器的FQDN以让客户端再次发起连接. 在Exchange2013的环境中,CAS只在少数几种情况下才会进行重定向动作.这是由于重定向迫使客户端进行再次连接,这种情况不是所有的客户端种类都可以接受的. 代理 CAS代理动作在Ex2010与Ex2007被设计的略微复杂

「深入 Exchange 2013」04 负载均衡

客户端关联性(已死~) 由于之前提到的CAS架构的改动,我们提到,Exchange 2013的CAS里不再需要客户端关联性.客户端关联性就是指在一次客户端连接过程中,一直是与同一台CAS服务器进行通信:换句话说,当客户端连接到了一个特定的CAS之后,该CAS会一直对该客户端提供服务直到该连接断开为止.为了达到这个目的,CAS必须维持该会话状态,在连接过程中经过的负载均衡器(支持客户端关联性的Load Balancer)才能知道是哪一个CAS正在处理该连接,从而进行正确的分流.如果负载均衡器或者是

「深入 Exchange 2013」06 命名空间

在前面的章节中,你可能会注意到"命名空间"这样一个词,会联想到C#语言或是XML文档里的那个命名空间的概念.但是在这里它的意思更偏向于URL或者FQDN,比如一个Exchange 2010的RPC Client Access Array客户端访问阵列可能有这样一个命名空间叫mail.contoso.com,而属于OWA的命名空间是owa.contoso.com,在Exchange 2013里,命名空间的设计规划过程变得不那么复杂.我们来看 使用单一命名空间: 最简单也是最常用的做法就是

「深入 Exchange 2013」MAPI over HTTP实战配置

在前面我们聊Outlook Anywhere的文章里头,我提到了MAPI over HTTP这个Exchange Server 2013 SP1中新增加的功能,这次这篇文章咱们就详细说说这个新的传输协议是什么,以及实战如何去配置它. 什么是MAPI/HTTP,有什么好处? 以前版本中(Exchange 2010),用的是RPC over HTTP(外部网络outlook anywhere)以及RPC Direct(内部网络)连接,Exchange 2013里,所有的连接都通过Outlook An

「深入 Exchange 2013」07 Autodisocver

微软在Exchange 2007里引入Autodiscover自动发现服务,意图去简化用户配置Outlook与Exchange ActiveSync的过程.Outlook的配置文件虽然可以手动配置,但是从Autodiscover会覆盖手动配置的选项,在你做出一些更改的时候,明显批量的自动下发配置更方便. Autodiscover还负责告诉Outlook当前的邮箱位置信息,Outlook会在与邮箱断开连接之后重新尝试Autodiscover.总而言之,这玩意儿跟Outlook Anywhere一样

「深入 Exchange 2013」11 传输架构Part1

阅读过TechNet文档的人肯定对下面这张图不陌生,这张图完整诠释了整个Exchange 2013的邮件传输架构,前一章里已经简要讨论过的几个组件都在里头,然而还有一些其他的组件也值得深入讨论.首先咱们来聊聊图里边出现的重要词汇. 1."代理"在这里是指Agents,而非是proxy,即处理或者传输消息的某一块程序代码.图中的agents直接反映出Exchange的Business logic,例如Exchange的反垃圾和恶意软件筛选组件属于协议代理,路由代理.邮件传递代理和邮件提交