地址:http://blog.csdn.net/wudkit/article/details/6109264

515人阅读 评论(0) 收藏 举报

在生产环境中,经常遇到这样的环境:用户的AD域名是a.com,用户的Internet注册域名是b.com,生产系统很多域名都注册在 b.com里面。为了确保最终用户的统一的使用体验,还需要确保无论在公司内部还是公司外部,都要使用xxx.b.com来访问应用。例如,无论在公司内部还是在公司外部,使用mail.b.com这个地址来访问exchange的owa。

一般来说这样的配置没有什么问题,但是在需要证书的exchange2007环境里,就会有一个问题:IIS上的证书,根据要求,issued to的名字和common name必须统一,并且只能有一个。而且IIS上只能配置一张证书,在前面这种多域名环境下,往往容易出现这样的错误,当你把证书的common name配置为mail.b.com时,内部outlook mapi或者pop3用户,就会因为解析的域名和证书不一致(内部outlook用户mapi客户端总是解析server的FQDN,例如 server1.mail.a.com),跳出这样的错误:安全证书上的名称无效或者与网站的名称不相同。

如何解决这个问题?在这里我们可以使用exchange2007的powershell,来生成一个支持多名称的证书。其实就是配置证书的 Other alternative name名称。

配置步骤:

1、使用powershell命令生成一个证书申请,我们以一开始的名称环境为例,假设要生成一个支持如下域名的证书:mail.b.com,mail.b.com.cn,server1.a.com(fqdn,为了让outlook不报错),autodiscover.a.com,请参看如下命令:

New-ExchangeCertificate -GenerateRequest -Path c:/mail_b_com.csr -KeySize 1024 -SubjectName "c=CN, s=Shanghai, l=Shanghai, o=OOOXXX, ou=IT, cn=mail.b.com" -DomainName mail.b.com.cn, server1.a.com, autodiscover.a.com -PrivateKeyExportable $True

上面这个命令是,生成一个证书申请请求,文件保存在c:/mail_b_com.csr路径下,subjectname是申请证书时的组织和地址信息,domainname后面的都是你要额外注册的域名。注意第一个一定要写之前的commonname。可以把你想要证书支持的域名都写进去,包括 server的FQDN。这样,访问这张证书中的任何一个名字,都不会报告证书名字不对应的错误了。

如果觉得很繁琐,这里有个简单的生成方法:

https://www.digicert.com/easy-csr/exchange2007.htm  到这个网页,输入自己证书相关设置,Powershell命令就自动出现了,然后复制粘贴命令就可以。

2、访问组织内部的CA,提交证书申请,通过文件申请,把这个文件提交上去。这个就不多说了,了解证书申请过程的都很清楚,也很简单。注意最后一步下载证书的时候,证书格式要选择Base 64 encoded  格式。

3、在powershell里,把这张证书导入到exchange服务器上(假设上面你保存下来的证书名称位certnew.cer):

Import-ExchangeCertificate -path c:/certnew.cer | enable-exchangecertificate -services "IIS,POP,IMAP"

 

4、在IIS里面,删除Exchange自签名的旧证书,然后assign这个新证书就可以了。

(这个地方没整明白,如何assign???)

至此,在启用了outlook anywhere的exchange07服务器上,再也不会报告上面的证书名字和访问呢名字不匹配问题了。