вторник, 31 мая 2011 г.

Публикация AutoDiscover – варианты поиска (часть1)

Служба AutoDiscover появилась в релизе сервера Microsoft Exchange 2007 и на неё была возложена задача автоматического конфигурирования клиентских приложений. Вместе с тем, перед администраторами встала задача предоставления клиентам доступа к данной службе. Именно об этом далее и пойдет речь.

Как известно, служба AutoDiscover на серверах Microsoft Exchange 2007/2010 работает по протоколу HTTPS, следовательно, требует наличия на сервере сертификата, более того, для поиска данной службы, клиенты используют четко определенные имена хостов, а это значит, что эти имена должны быть включены в сертификат. Также, ни для кого не секрет, что для того, чтобы включить в сертификат дополнительные имена хостов следует воспользоваться полем SAN (Subject Alternative Name), а оно, в свою очередь, вносит очень весомый вклад в общую стоимость сертификата, в случае, если мы его приобретаем у сторонних компаний. В связи с этим, я предлагаю обсудить в данной статье базовые принципы работы службы Autodiscover и посмотреть на то, как можно опубликовать данную службу имя в сертификате лишь одно имя хоста.

Внимание! Рассматривать вариант с сертификатом, выданным локально, т.е. доменной службой сертификации мы не будем!

Autodiscover – принцип работы

Если не вдаваться в подробности, то принцип работы службы Autodiscover достаточно прост. Клиент, любым доступным способом, получает XML-файл с настройками и автоконфигурируется согласно им.Поиск настроек клиентским приложением Outlook 2007/2010 происходит по двум основным алгоритмам. Выбор алгоритма зависит от «местоположения» клиента:

1. Клиент находится внутри сети и включен в домен;

2. Клиент не доменный.

Примечание: XML-файл публикуется на виртуальном каталоге IIS на сервере клиентского доступа (CAS). Физически данный XML-файл находится в каталоге установки, обычно C:\Program Files\Microsoft\Exchange Server\V14'\Client Access\Autodiscover\

Autodiscover для внутренних доменных клиентов

Клиенты, которые подключены к домену, и которые могут успешно выполнять запросы к базе данных Active Directory, получают информацию об автоматической настройке следующим образом:

1. Клиенты MS Outlook 2007 и старше отправляют LDAP запрос к базе данных Active Directory в поиске всех доступных объектов SCP (Service Connection Point). Фактически, клиентам нужно прочитать два атрибута:

  • serviceBindingInformation – FQDN CAS сервера в формате https://<YourCAS> /autodiscover/autodiscover.xml
  • keywords – указывает сайт, с которым эта SCP ассоциирована. По умолчанию равняется имени сайта, к которому принадлежит CAS.

Примечание: Объекты SCP создаются автоматически в базе AD для всех серверов Exchange с установленной ролью Client Access (CAS) (см.рис.1).

clip_image002

Рис.1: Атрибуты SCP, считываемые доменными клиентами при запросе.

2. На запрос клиент получает список «ближайших» к нему точек Autodiscover в виде соответствующих URL`ов;

3. Клиент пытается скачать XML-файл с настройками, по очереди открывая все URL`ы, полученные из SCP;

4. В случае неудачи, клиент активирует другой алгоритм поиска службы Autodiscover.

Autodiscover для внешних клиентов

Если обратиться к службе Active Directory не удалось, то поиск службы AutoDiscover продолжается, пока не будет получен первый ответ. Алгоритм следующий:

1. Клиент пытается разрешить в DNS стандартные URL`ы службы AutoDiscover:

  • https://<smtp-domain>/autodiscover/autodiscover.xml
  • https://autodiscover.<smtp-domain>/autodiscover/autodiscover.xml

где <smtp-domain> - это все то, что после @

2. Если по протоколу HTTPS стандартные URL`ы не отвечают, то осуществляется попытка выполнить метод GET на указанные выше URL`ы по протоколу HTTP. Этот метод применяется только для редиректа на HTTPS-сайт;

3. В случае очередной неудачи, клиент пытается получить из DNS SRV-запись службы Autodiscover. SRV запись вида _autodiscover._tcp. <smtp-domain> может указывать на любой другой URL, например, тот, который используется для OWA, ActiveSync и т.п. (https://mail. <smtp-domain>/autodiscover/autodiscover.xml)

Примечание: Возможность обнаружения Autodiscover`a через SRV-запись доступна клиентам с MS Outlook 2007 только после установки обновления - http://support.microsoft.com/kb/939184. Подробнее про данный метод можно почитать здесь - http://support.microsoft.com/?kbid=940881. В MS Outlook 2010 эта функция включена по умолчанию.

4. Если все предыдущие попытки не увенчались успехом, то клиент пытается найти локальный XML-файл с настройками. Подробнее про этот метод можно прочитать в библиотеке TechNet`a (http://technet.microsoft.com/en-us/library/cc511507.aspx)

Вот таким вот не хитрым образом клиенты Outlook 2007/2010 пытаются автосконфигурироваться для работы с сервером Exchange. Уяснив эти моменты можно подумать на тему того, как обойтись без лишнего имени в сертификате для службы AutoDiscover.

Варианты публикации Autodiscover`a

Резюмируем варианты публикации службы Autodiscover с точки зрения использования сертификатов. Итак, сервер можно опубликовать:

1. Используя один сертификат с несколькими именами хостов (с полем SAN):

Публикуем службы OWA, ActiveSync и Outlook Anywhere на адресе, к примеру, https://mail.alexxhost.ru/... а службу AutoDiscover – на адресе https://autodiscover.alexxhost.ru/autodiscover/autodiscover.xml

Это рекомендуемый вариант с точки зрения Microsoft Best Practice, но он требует поддержки поля SAN со стороны клиентского приложения.

2. Используя один сертификат без поля SAN:

Здесь мы воспользуемся возможностью поиска службы AutoDiscover через SRV-запись.

Очень удачный и недорогой вариант, в том случае, когда есть возможность использовать SRV-записи. Требует обновления MS Outlook 2007 и внесения изменений в SCP.

3. Используя два разных сертификата без поля SAN:

Публикуем два сайта – один сайт с основными службами на адресе https://mail.alexxhost.ru/... с одним сертификатом, а другой – со службой AutoDiscover на адресе https://autodiscover. Alexxhost.ru/autodiscover/autodiscover.xml с другим сертификатом.

Применяется, если какие-то из клиентов не могут читать поле SAN. По цене получается почти аналогично первому. Требует наличия дополнительного внешнего IP адреса.

4. Используя поиск службу AutoDiscover через HTTP редирект.

По протоколу HTTP публикуем XML-файл http://autodiscover.alexxhost.ru/autodiscover/autodiscover.xml и настраиваем на нем редирект на https://mail.alexxhost.ru/autodiscover/autodiscover.xml.

Аналогично 3-му пункту требуется дополнительный внешний IP адрес.

Заключение

На этом моменте немного прервемся и в следующей части продолжим разговор уже непосредственно о том, как озвученные выше варианты воплотить в жизнь.

49 комментариев:

Анонимный комментирует...

Я еще использовал третий вариант, когда появилось необхоимость обслуживать еще один почтовый домен. Появилось новое доменное имя, при это не хотелось перевыпускать сертифкат, да и отдельный IIS с IP-ом занимать ради этого не хотелось. А так - просто добавил одну SRV запись, и все дела. Более того, е меня уже таких доменов не один. а несколько. И каждый новый так и добавляю.

Алексей Богомолов (Alexx) комментирует...

Да, SRV-запись - это хорошо, но не нужно забывать про то, что на 2007-й Outlook надо инсталлить обновление http://support.microsoft.com/kb/939184.

Анонимный комментирует...

Подскажите пожалуйста что и где надо сделать для второго варианта чтобы иметь возможность работать с покупным сертификатом на одно имя?
внутренний домен firma.local, внешний firma.ru
SRV запись _autodiscover во внутреннем домен сделал на mail.firma.ru, а при настройке outlooka внутри сети все равно подставляет mail.firma.local и ругается на сертификат :(
снаружи на mail.firma.ru все работает нормально.

заранее спасибо.

Алексей Богомолов (Alexx) комментирует...

Вот этот пост читали? http://www.alexxhost.ru/2011/05/dns-ru-local.html

Анонимный комментирует...

у меня с точностью до наоборот! внутри сети все отлично работает, а если с интернета подключаться то подставляет локальный адрес exchange сервера :(

vasya комментирует...

Ну так у вас не прописаны внешние адреса в настройках Outlook Anywhere

Анонимный комментирует...

Приветствую!
Может быть Вы поможете с проблемой...
Есть 2 сервера Exhange 2010 разнесенных географически, host1(не мой) и host2(мой), автодискавер настроен на обоих серверах, суть проблемы в том, что клиенты пользующиеся моим сервером извне, получают запрос на ввод пароля к автодискаверу host1, при каждом старте Outlook'a, autodiscover.mydomain.ru прописан на host1(не srv записью), мой автодискавер во внешних днс не фигурирует, к слову сказать у нас один домен + у меня wildcard сертификат, у них - самоподписанный. Замечено что если повернуть у клиентов autodiscover.mydomain.ru на host2, то проблема исчезает. Вот такая штука...

Анонимный комментирует...

Лично я использовал 3й вариант. Правда пришлось делать NAT на нестандартный порт IIS вот и всё

Алексей Богомолов (Alexx) комментирует...

На тему host1 и host2 - это нормально, что ваши внешние клиенты идут на автодискавер первого сервера, т.к. он прописан во внешней зоне, а ваш нет. Если внутри домена можно настраивать Scope для автодискавера, то во внешке так сделать не получиться. На мой взгляд, единственный вариант - это настроить доверие ваших клиентов сертификату первого сервера (импортировать корневой серт можно через групповые политики). Либо в файле host у всех связать autodiscover.mydomain.ru с вашим IP адресом.

Ярослав комментирует...

Спасибо за статейку - очень помогла. Решил тоже от поддомена autodiscover уйти, но вот банальный вопрос. Злополучный апдейт kb939184 - в какие-то сервис-паки входит? или его отдельно доставлять надо. Имхо получаю постоянно ошибку при установке.
что посоветуете?

Ярослав комментирует...

Спасибо, уже разобрался
http://social.technet.microsoft.com/Forums/en-US/outlook/thread/ed849400-a230-4b86-bb70-9df4a6493cd5
вот на всякий случай

Алимов Александр комментирует...

В организации один домен два сайта. Развернул exchange на сайте 1... все клево.

Спустя некоторое время на сайте 2 поставил hub+Mailbox +cas.(хотел чтобы некоторые ящики пользователей сайта 1 хранились на серверах сайта 2). Ничего не получилось, но это отдельная история...

ГЛАВНОЕ. Теперь после выключения сервера на сайте 2, у всех пользователей которые по rdp сидят на серверах сайта 2 - outlook постоянно спрашивает пароль и при добавлении нового пользователя в outlook - автоматически не подхватывает настройки. Я чуствую что это с автодискавером что то не так, а как починить не знаю.

Подскажите советом.

И еще - как в оснастке сайты и службы отобразить папку services&

Максим комментирует...

Алексей добрый день, не могли помочь советом, настроил ЦС, создал сертификат с полем SAN опубликовал Outlook Anywhere, все сделал по Вашим статья.
Вроде все работает, outlook из вне подключаются все ок,
Но появилась проблема, при запуске outlook на локальных компах (в домене), постоянно появляется, сообщение об ошибке: имя сертификата недопустимо или не соответствует имени узла, и в полях, кем выдан и кому выдан стоит D-link Firewall (в сети в качестве интернет шлюза используется d-link dfl-860),
т.е. получается outlook не принимает сертификат выданный d-link? и как в таком случае избавиться от этого сообщения?

Алексей Богомолов (Alexx) комментирует...

Скорее всего Outlook не доверяет D-Link`y как издающему СА. Надо его сертификат (корневой) положить всем в Доверенные корневые центры. Проще свой СА Enterprise поднять, тогда корневые сертификаты по домену сами расползутся.

Максим комментирует...

спасибо что откликнулись, так и делаю, добавляю сертификат в Доверенные корневые центры на клиентских компах, (изначально в сообщении об ошибки сертификата, было два пункта, 1. что выдан организацией не являющейся доверенной, 2. не соответствие имени сертификата и имени узла) после проделанного осталось только: не соответствие имени.

Максим комментирует...

последнее что в голову пришло, а если при создании сертификата сервера, в поле SAN добавить имя узла D-link?

Алексей Богомолов (Alexx) комментирует...

ну раз не соответствует имени, то надо смотреть какие имена у вас в серте. Надо как минимум FQDN узла + autodiscover.fqdn

Serg Gordin комментирует...

Добрый день, Алексей!
Сегодня Outlook перестал подключаться к Exchange в локальной сети. Пишет, что не доступен сервер. OWA работает.
Что примечательно, каталог autodiscover, путь до которого показан у вас на скрине пустой.

Сергей Корнильев комментирует...

Добрый день народ!!! Такая ситуация, достался мне Exchange 2010 по наследству, и есть проблемы:
1. Постоянно при запуске оутлук у пользователей домена запрашивается логин и пароль, хотя автонастройка оутлук работает на ура
2. Посмотрел я "Атрибуты SCP, считываемые доменными клиентами при запросе." у меня их вообще нет, как выяснил недавно они убрали сервер АД который был при установке exchange и вогнали новый, думаю поэтому и нет этих параметров.
Вопрос что можно со всем этим сделать?

Алексей Богомолов (Alexx) комментирует...

Да, надо вернуть SCP обратно:
Set-ClientAccessServer -Identity "your CAS" -AutoDiscoverServiceInternalUri "https://.contoso.com/autodiscover/autodiscover.xml"

Сергей Корнильев комментирует...

Выполнил команду указанную выше, теперь при переходе по адресу https://owa.domain.com/autodiscover/autodiscover.xml
Получаю такой ответ:

-
-
-
600
Недопустимый запрос





Что это может означать? Скажу сразу я с Exchange столкнулся не так давно, поэтому многое не понимаю.

Алексей Богомолов (Alexx) комментирует...

Так и должно быть если вы идете браузером (вы же ни какого запроса на отправляете) :)

Сергей Корнильев комментирует...

А что можно сделать с этим:
Постоянно при запуске оутлук у пользователей домена запрашивается логин и пароль, хотя автонастройка оутлук работает на ура

Может конечно я не совсем по теме статьи задаю вопрос, извините за ранее.

Алексей Богомолов (Alexx) комментирует...

А вот у этого вариантов может быть очень много. Самый распространенный - рвется подключение по MAPI, Outlook переключается в режим Outlook Anywhere, а там Basic авторизация. Ввиду того, что при BAsic учетные данные ни когда не кэшируются, соответственно они запрашиваются постоянно заново, как только устанавливается новая сессия

Сергей Корнильев комментирует...

Да изменил с Basic на NTLM и все заработало, большое спасибо!

Сергей Корнильев комментирует...

Извините за возможный оффтоп, но не подскажите русскоязычный нормальный форум по exchange что бы я мог по задавать вопросы, у вас я так понимаю блог все таки, а не форум.

Алексей Богомолов (Alexx) комментирует...

Да, кончено, вот например здесь помогают http://social.technet.microsoft.com/Forums

Олег Кусмарцев комментирует...

Скажите, почему не грузиться глобальный список адресов, если в настройках браузера используется прокси-сервер? В роли прокси выступает TMG. Если убить прокси и пользоваться только клиентом TMG - всё ок., при проверке настройки почты из трея, в режиме прокси, при попытке получить xml с URL server.domain.local - шибка 502. Что это может быть?

Алексей Богомолов (Alexx) комментирует...

Тут надо смотреть настройки TMG, а не Exchange, К сожалению я не смогу Вам помочь.

Олег Кусмарцев комментирует...

Спасибо за ответ, тут к сожалению всё вместе и TMG и Эксплорер и всё в комплексе. Если интересно, то криво работает скрипт WPAD, который автоматически генерируется TMG, и соответственно с броузера на внутренние узлы он идет минуя прокси, а отулук всё равно лезет через прокси, несмотря на то, что CAS сервер добавлен в исключения. Решение - тут:
http://blog.it-kb.ru/2012/06/07/forefront-tmg-and-custom-pac-file-wpad-dat/

Олег Кусмарцев комментирует...

И вот еще:
http://forums.msexchange.org/m_1800529962/mpage_1/key_/tm.htm

Анонимный комментирует...

Здравствуйте.
Запутался совсем. Есть два сайта, старый (Exch2007) с работающей OWA в собственной DMZ + почтовые сервера и новый (exch2010) с OWA в другой DMZ + почтовые сервера.
с новой OWA я могу подключиться к п.я. на exch2007, а при подключении к п.я. расположенном на exch2010 (в том же сайте, что и новая OWA) в строке адреса выдается внутренний адрес почтового сервера и собственно обламывается. Не могу сообразить, что и где смотреть.

Ильф Фильштейн комментирует...

добрый день уже неделю грызу ногти не могу сообразить как же так из вне не могу ни как подключиться правила на тмг 2010 работают корректно, но при этом сервер не может пройти аутентификацию.постоянно спрашивает пароль не дает провалиться.exchange 2010 вроде то же работает норманде и micr-active-sy... ходит на ура!,в днс все прописано. не знаю что еще предпринять.

Алексей Богомолов (Alexx) комментирует...

А вы вообще включили outlook Anywhere на Exchange`e? Если из вне открывать ссылку https:\\mail.firma.ru\rpc\rpcproxy.dll - что вы видите?
Вот тут тест запустите - https://testconnectivity.microsoft.com/

Ильф Фильштейн комментирует...

из вне морда на нее тмг не пускает пользователей.
мне она не нужна а вот тест на подключения дал
"Не удалось создать для сертификата цепочку сертификатов." Это что за цепочка

Алексей Богомолов (Alexx) комментирует...

Цепочка - это проверка доверия к сертификату, вероятно у Вас серт. выпущен локальным СА, так что не получится сделать тест из внешки.
А вот фразу "из вне морда на нее тмг не пускает пользователей" вообще не понял, поясните, что вы видите при запросе \rpc\rpcproxy.dll ?

Ильф Фильштейн комментирует...
Этот комментарий был удален автором.
Ильф Фильштейн комментирует...

при подключении через web морду выдает панельку TMG при вводе домена имя пользователя пароля так же пустая страница.

Ильф Фильштейн комментирует...

“Нет необходимых разрешений для доступа на этот веб-узел. Обратитесь к администратору веб-узла.”

Алексей Богомолов (Alexx) комментирует...

Ильф, вы мастером публикации Exchange пользовались на TMG, когда правило делали?

Nikita Spickiy комментирует...

добрый день, может поможете с моей проблемой? Есть сервер Exchange 2013 (всего 1, выполняющий все роли). Ранее autodiscover был опубликован через SRV-запись, но с недавнего времени потребовалось чтобы была запись autodiscover.mydomain.ru. По идее можно было бы купить сертификат с SAN и все было бы хорошо. Но ситуация не позволяет этого сделать, и был приобретен отдельный сертификат для autodiscover.mydomain.ru. Теперь не получается разобраться, как настроить 2 сайта с разными сертификатами на 1 сервере. И это вообще возможно?

Алексей Богомолов (Alexx) комментирует...

Никина, на одном сервере это не возможно (в случае с Exchange), т.к. Exchange использует один веб-сайт IIS. Разделение виртуальных каталогов по нескольким сайтам в рамках одного IIS не поддерживается.
Попробуйте посмотреть в сторону веб-прокси серверов, типа IIS ARR, там может получиться.

Nikita Spickiy комментирует...

Т.е. получается мне для Autodiscover нужен отдельный сервер?

Алексей Богомолов (Alexx) комментирует...

Для публикации всех веб-сервисов Exchange МОЖНО (читайте как "лучше") взять отдельный сервер. На одном два разных сертификата не прикрутить.

АлексейАрт комментирует...

Прекрасно использовал вариант2(4) без SRV и редиректа, просто прописав почтовый сервер не как mail.domen.ru, а дал ему имя autodiscover.domen.ru. Взял бесплатный сертификат на startssl.com и прописал для своего сервера -AutoDiscoverServiceInternalUri https://autodiscover.domen.ru/autodiscover/autodiscover.xml

АлексейАрт комментирует...

Да, спасибо за статью, она мне и подала идею использовать имя autodiscover для почтового сервера.

Максим комментирует...

Где продолжение статьи? Где часть 2?

Чингис комментирует...

Добрый день. Ждем вторую часть статьи. Заранее спасибо

Анонимный комментирует...

Ждем вторую часть

Отправить комментарий