随着Exchange邮件系统在越来越多的企业内部流行起来,员工们也很乐意去使用Office Outlook来收发邮件,大大的方便了工作邮件实时有效的传递。但是在用户使用Outlook的同时,也会遇到越来越多的问题,比如Outlook证书报错问题,导致的无法正常使用客户端。今天我们就来说一说outlook证书报错的问题。
众所周知,企业Exchange邮件系统的公网收发必须配合公网证书的绑定,不然国内外的很多认证机构是无法判断您企业邮箱是否是合法的发送源,从而导致邮件的无法正常收发。下图就是我们证书管理其中默认的一些“授信认的根证书颁发机构”,只有这些机构颁发的公网证书或私有证书,才能使应用具有真正意义上的运行权限和访问权限。
目前企业在搭建Exchange邮件服务器的同时,如果要进行公网的发布,通常会申请两种证书,一种是“多域名证书”,另一种是“通配符”证书。通配符证书呈现形式是 *.contoso.com,意思是允许所有的二级域名的公网访问,也是我们现在比较推荐的证书,由于这种证书使用面很广,且认证面非常广,所以基本不会出现本文提到的outlook证书报错,所以不在此次讨论的范围中。
本文主要讲的是“多域名证书”的范围。目前国内从不同证书颁发机构购买的多域名证书默认是可以含有五个二级域名的证书,故命名为“多域名证书”。也就是说只有在使用此证书包含的二级域名发布服务,才能够被有效、合法的访问到。
在目前的Exchange Server部署中,我们一般情况采用微软推荐的两台前端CAS和两台后端MBX来进行高可用DAG部署。
这种情况下,我们申请的“多域名证书”通常包含如下几个二级域名:
我们可以看到,以上五个二级域名中,包含了两个前端服务器的FQDN,这个的目的主要是使得用户在通过内外网接入Exchange Server的时候,需要从前端客户端访问服务器进行身份验证后方能进行下一步的接入服务。但是前端两台CAS服务器也必须具有合法效应,换句话说,他们必须有属于自己的公网证书条目。正因如此,我们才会将前端的两台CAS服务器的FQDN也加入到多域名证书条目中。(如果是单台邮件服务器ALL in one部署的话,就申请此台服务器的FQDN即可)
如果我们在当初申请公网证书的时候忘记了将前端服务器的FQDN加入到多域名证书的条目中,或者沿用之前的老邮件服务器的证书(CAS名称不存在或已改变),我们的客户端outlook在访问Exchange 邮件服务器的时候将会遇到如下报错,使得用户无法正常使用outlook客户端。
那么怎么解决这样的问题呢,我们接下来看。
首先我们可以思考一下,在用户使用outlook访问Exchange邮件服务器的时候,提示证书报错,这个基本可以确定是客户端接入的时候,无法通过验证,那我们就以管理员身份打开EMS,使用get-outlookanywhere命令来查看一下outlookanywhere现在的设置。
果然,我们发现了,服务器在对outlook接入的时候,内部主机名和外部主机名是不一样的,因为对外我们发布的邮件系统接入名一般都是mail.contoso.com或者其他,但是内部接入主机名赫然写着我们的前端服务器FQDN,这样在前端CAS服务器证书缺失的情况下,我们确实无法通过服务器验证。那么我们只能通过修改这个值来规避这个问题。
首先我们通过以下命令来开启SSLOffloading功能
Get-OutlookAnywhere | Set-OutlookAnywhere -SSLOffloading $true
然后再通过以下两条命令来统一内/外部主机名,并开启内部和外部用户的SSL验证需求
Get-OutlookAnywhere | Set-OutlookAnywhere -InternalHostname mail.guochen.com -InternalClientsRequireSsl $ture
Get-OutlookAnywhere | Set-OutlookAnywhere -ExternalHostname mail.guochen.com -ExternalClientsRequireSsl $true
之后在通过Exchange 2013 ECP控制台来检查所有虚拟目录的内部/外部 URL主机名是否统一为mail.xxx.com,如果不是的话,请更改URL为统一的域名。
这样设置了之后,我们无论是内部或者外部的outlook访问都将会寻找我们的统一主机名mail.xxx.com, 这样的话就巧妙的避开了因为CAS证书不存在所导致的报错,使得用户可以能够从内外网正常的访问到CAS服务器进行验证,从而链接到后端MBX邮箱数据库,进行正常的邮件使用。