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

有两种方法可以让Exchange使用TLS,第一种也是最简单的一种,叫做机会型TLS,意思是Exchange一有机会(对端服务器主动使用TLS)就会启用TLS,默认情况下机会型TLS功能会一直开着,而且会使用Exchange安装时候生成的自签名证书(如果你没指定证书的话)。Exchange 2013 还对所有远程连接主动尝试实现 TLS。

另一种是相互TLS,尽管TLS是一种传输层的加密,但是如果每台服务器通过验证另一台服务器提供的证书来验证这台服务器的身份的话,TLS也可以作为一种验证方法。Lync就基于相互TLS,当然Exchange也可以配置成这样。

机会型TLS不进行证书的有效性检查,有个自签名的证书它就认为是OK的,甚至是过期的证书也行。而相互TLS的应用要求则比较严格,因为Exchange会进行完整的证书检查,包括证书的时效性,查看发行者的证书吊销列表等等。

值得一提的是,Exchange 2013采用的是TLS V1.2,也是最新的TLS,其他的邮件服务器可能无法支持该版本,所以TLS的协商过程中,双方会声明自己的支持版本。在Microsoft Exchange上提供和接受的TLS版本、TLS会话中使用的加密算法,这些都是受Windows 安全通道子系统控制(即Schannel),关于如何查看或者修改Windows使用了那种加密算法,可以参考这篇Technet文章:https://technet.microsoft.com/en-us/library/cc784149(v=ws.10).aspx 虽然这篇文章标明for windows 2003,但是在现在的版本里依旧适用。

基本TLS

TLS实际上在所有的MBX的传输服务之间已经被启用了(Technet描述是强制启用的);向启用TLS的服务器发出SMTP EHLO得到的回应里会包含一条STARTTLS命令,发送方收到这个响应后,就知道可以开始进行TLS协商,这是一个非常简单的测试远程服务器是否接受TLS流量的方法,即telnet连接到对方的smtp侦听端口,发送一个EHLO,看看对方会不会返回STARTTLS。

配置发送连接器/接收连接器使用TLS非常简单,使用Set-SendConnector 或者 Set-ReceiveConnector 带上一个-RequireTls $True就可以打开该连接器的TLS选项,还有一个参数是-TlsCertificateName ,即为这个连接器的TLS指定一张作用证书,如果你不指定这个选项的话,默认Exchange采用你之前分配给SMTP服务的证书来进行TLS验证。如果为SMTP应用了多张证书,那么Exchange会进行一个最优证书的选择,首先会选择一张使用者备用名称里有本服务器FQDN的证书,如果没选出来,有多张证书符合这个条件,那么就按照证书的有效日期排序,选择最近的一张使用。

如果需要某个发送连接器避免使用TLS,那么只需要Set-SendConnector带上一个-IgnoreSTARTTLS参数,打开这个选项后,该发送连接器不会宣告自己支持TLS,也不会发送STARTTLS给对方服务器。如果需要某个接收连接器不宣传或是不接受TLS的话,就用Set-ReceiveConnector后面带上SuppressXAnonymousTls的参数。注意如果你针对默认的接收连接器开启了这个选项,会导致组织内的邮件流中断,因为Exchange 2013设计在组织内部是必须使用TLS的。

还可以指定连接器上应用的TLS的保护等级,默认的TLS保护等级为只加密传输(EncryptionOnly)。可以通过TlsAuthLevel参数来控制,一共是一下三个等级:

  • EncryptionOnly:默认的,意思是连接器应该使用TLS加密传输,而不试图验证证书。

  • CertificateValidation:证书验证,包括传输加密和基本证书检查。双方都互相拥有对方的证书,并且会验证证书链和有效日期、吊销列表等等。

  • DomainValidation:域验证,最安全的等级。包括传输加密和证书检查,并且验证证书里包含的FQDN是否符合Set-SendConnector中带的TlsDomain参数(没有使用这个参数的话,则会去匹配发送者的SMTP域。)

比方说你需要确认在与微软Outlook.com进行邮件交换时使用域验证的TLS:

Set-SendConnector –id “EX01\Outlook.com” –TlsAuthLevel DomainValidation –TlsDomain protection.microsoft.com
 

如果是接收连接器的话,参数就不是-TlsAuthLevel,而是-TlsDomainCapabilities。

使用域安全性

域安全性是使相互 TLS 成为有用并且容易管理的技术的功能集,例如证书管理、连接器功能和 Outlook 客户端行为。

一台被配置使用TLS的服务器有两种方法可以应用相互TLS验证,默认是使用X.509证书验证算法来验证远端证书的有效性。另一种就是Exchange会直接去检查AD或者ADLDS里(边缘角色与邮箱角色之间)是否确实存在这台服务器的证书,这种方法也被叫做(Direct Trust)直接信任,如果存在该证书,则证书有效。这个过程中,AD被作为是受信任的证书存储。

Exchange在内部自动使用Direct Trust来支持X-ANONYMOUSTLS和相关联的连接,然而域安全性无法运行在前端传输服务上,所以通过 Exchange 2013 客户端访问服务器路由出站电子邮件时,不支持域安全性。

如何查看一个站点是否支持TLS

使用CheckTLS.com这个网站可以很方便的查询某个站点是否支持TLS,如下图:

WAN优化设备和TLS

目前在复杂网络环境下,存在一种设备叫WAN优化控制器,即侦听和优化(压缩)一些跨广域网的站到站流量,这些设备大多数都支持MAPI和SMTP流量,但是如果碰上了TLS加密的流量,他们就得先解密才能进行流量优化。Technet上有这样一篇文章告诉咱们如何将Exchange 配置为支持WAN优化控制器,如果在真实环境里碰到了,可以参考一下:https://technet.microsoft.com/zh-CN/library/ee633456%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396

TLS咱们就聊到这里。下一章我们就讲讲队列……最近Exchange 2016发布,再加上手头有两个项目在同时进行,更新速度减缓了不少啊……

EXCHANGE 2013 TLS传输层安全的更多相关文章

  1. SSL&TLS传输层加密协议实现图解--(重要)

    一.SSL&TLS 1.SSL:Secure Sockets Layer ,加密套接字协议层 1)SSL是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密 Secure ...

  2. lync2013 错误: 已为不同的传输层安全性(TLS)目标找到类型为“McxInternal”且完全限定的域名(FQDN)为

    最近 练习安装lync2013 在发布拓扑结构时遇到如下错误: lync 错误: 已为不同的传输层安全性(TLS)目标找到类型为“McxInternal”且完全限定的域名(FQDN)为“lync.co ...

  3. TLS协议(安全传输层协议)

    概况 安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性.该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake).较低的层 ...

  4. x-pack 功能介绍及配置传输层安全性(TLS / SSL)

    x-pack 功能介绍及配置传输层安全性(TLS / SSL) 学习了:https://blog.csdn.net/wfs1994/article/details/80411047

  5. 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。

    早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...

  6. [转帖]传输层安全协议TLS 1.3 RFC 8446使互联网更快、更安全

    传输层安全协议TLS 1.3 RFC 8446使互联网更快.更安全 2018-08-12 11:38:19作者:LINUX人稿源:开源社区 https://ywnz.com/linuxyffq/261 ...

  7. 在SuperSocket中启用TLS/SSL传输层加密

    关键字: TLS, SSL, 传输层加密, 传输层安全, 证书使用, X509Certificate SuperSocket 支持传输层加密(TLS/SSL) SuperSocket 有自动的对TLS ...

  8. [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解

    技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解    http://www.52im.net/thread-1309-1-1.html   本文来自腾讯资深研发工程师罗成的技术分享, ...

  9. Self Host WebApi服务传输层SSL加密(服务器端+客户端调用)

    接上篇<WebApi服务URI加密及验证的两种方式>,在实际开发中,仅对URI进行加密是不够的,在传输层采用SSL加密也是必须的. 如果服务寄宿于IIS,那对传输层加密非常简单仅需要配置一 ...

随机推荐

  1. 关于chrome下的bug

    最近看了大神的一篇文章,于是尝试了一下里面说的bug以及修复 1.Chrome下absolute绝对定位元素部分display属性值不渲染bug 首先还原一下bug.. ff下的下效果 点击按钮后的效 ...

  2. git 学习之撤销和删除

    在实际的工作和学习中我们经常的会对文件进行修改,但是或多或少的就会发现由于某些原因修改是错误的这时候就需要对所做的修改进行撤销,更或者某些时候需要对文件进行删除.本节就会告诉大家如何操作. 撤销操作 ...

  3. Linux原始套接字实现分析---转

    http://blog.chinaunix.net/uid-27074062-id-3388166.html 本文从IPV4协议栈原始套接字的分类入手,详细介绍了链路层和网络层原始套接字的特点及其内核 ...

  4. CC2530zigbee技术-简介协议栈

    前言 说实话,我喜欢自己的原创,虽然我写得可能简单了,但我觉得自己在写博客的路途上,一点一点地积累知识,我也借鉴别人的东西,特别是在写这篇文章时所使用的是markdownpad2写的,原来我根本就不知 ...

  5. laravel5.4学习--laravel安装

    1.使用Laravel HomeStead可以直接作为laravel的环境,如果没有使用Homestead,就必须保证开发环境满足以下要求 PHP版本 >= 5.6.4PHP扩展:OpenSSL ...

  6. 深度为君剖析CTO、技术总监、首席架构师的区别

      CTO.技术总监.首席架构师的区别 经常有创业公司老板来拜访我,常常会拜托给我一句话:帮我找一个CTO. 我解释的多了,所以想把这个写下来,看看你到底需要的应该是啥. 一.高级程序员 如果你是一个 ...

  7. MVC官方教程索引

    1.MVC教程首页http://www.asp.net/learn/mvc/?lang=cs 2.MVC概况2.1创建一个基于数据库的"电影"web应用http://www.asp ...

  8. 一、hadoop单节点安装测试

    一.hadoop简介 相信你或多或少都听过hadoop这个名字,hadoop是一个开源的.分布式软件平台.它主要解决了分布式存储(hdfs)和分布式计算(mapReduce)两个大数据的痛点问题,在h ...

  9. sql = 和<>遵循的sql-92标准的设置SET ANSI_NULLS ON

    说明 SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE. 当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空 ...

  10. ETL第二篇 调用webservice

    ETL第一篇(Kettle Spoon) 初遇 ETL第二篇 调用webservice 前言 这里使用ETL [Java代码] 实现 代码中使用axis调用webservice 在ETL提供了 Pro ...