Использование Transport Layer Security

Из-за того что при отправлении почтовых сообщений в стандарте SMTP не используется ни шифрование, ни процедура аутентификации, любое сообщение является доступным для просмотра. Решения на стороне клиента, такие, например, как Secure MIME (S/MIME) или Pretty Good Privacy (PGP), могут помочь решить проблему защиты почты, но они требуют участия в этой процедуре самих пользователей. Основной участок, где следовало бы сосредоточить усилия по обеспечению безопасности, — защита трафика SMTP. Если удастся обезопасить SMTP, то в принципе можно будет достичь стопроцентной безопасности почтового трафика, неважно — порождается он на данном сервере или заканчивается.

Microsoft Exchange Server предусматривает несколько способов обеспечения безопасности почтового трафика. Один из них состоит в обязательном использовании Secure Sockets Layer (SSL) for SMTP для имеющихся соединений. Однако применение этого способа вызывает некоторые проблемы. По умолчанию все серверы SMTP используют 25-й порт. Но если для 25-го порта применяется SSL, то остальные серверы, не поддерживающие SSL, уже не смогут установить соединение с данным сервером через 25-й порт. А если воспользоваться нестандартным номером порта, остальные серверы вообще не смогут обнаружить его.

Проблему можно попытаться обойти. Команда STARTTLS (она входит в состав Extended SMTP — ESMTP) позволяет клиенту и серверу SMTP распознать факт применения Transport Layer Security (TLS) для обычного SMTP-соединения. Участник соединения на любом его конце может провести аутентификацию своего партнера или же TLS-соединение может использоваться исключительно как секретный канал связи. Как бы то ни было, у такого подхода есть три важных преимущества.

  • Отсутствует пересечение с остальными серверами и клиентами. Те клиенты, которые поддерживают функцию STARTTLS, могут ее использовать; те, кто не может, продолжают работать с незащищенным трафиком SMTP.
  • Гибкость решения. Если клиент может задействовать TLS с SMTP, сервер автоматически запрашивает TLS-подключения при обращении к остальным серверам и сам откликается на запросы о TLS-соединении. Предположим, что какой-либо внешний сервер запустил процесс согласования абонентов, в этом случае почта автоматически становится защищенной. Тем не менее я бы посоветовал администраторам заставлять пользователей включать параметр SSL/TLS на почтовом клиенте.
  • TLS-шифрование SMTP защищает заголовки сообщений, это дополнительная степень защиты от программ-анализаторов трафика, без которой злоумышленник смог бы без труда установить, кто и как часто связывается друг с другом.

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

Запрос на SSL-сертификацию

Прежде чем начать использовать TLS с SMTP, необходимо получить и установить сертификат для SMTP-сервера. Если у вас уже имеется собственный центр сертификации, Certificate Authority (CA), запрос на получение SSL-сертификата не вызывает затруднений, если же нет, тогда необходимо сохранить запрос на сертификат в файле и передать его в предпочтительный CA. О том, как установить Microsoft CA или воспользоваться внешним CA для инфраструктуры открытого ключа (Public Key Infrastructure — PKI), рассказано в статье Certificate Services в справочнике Windows Server Help. Предположим, что у нас есть доступ к CA и необходимо составить запрос и установить сертификат SSL для работы с Microsoft Outlook Web Access (OWA), IMAP, POP или SMTP.

Базовый механизм выдачи сертификатов для всех перечисленных протоколов одинаков, хотя в настоящей статье рассматривается только SMTP. Процедуру запроса сертификата мы инициируем из Exchange System Manager (ESM). В окне дерева ESM нужно отыскать свой сервер и выбрать Protocols и SMTP. Затем следует открыть контекстное меню виртуального сервера и выбрать Properties; на вкладке Access появится кнопка Certificate, которая включается всякий раз при запуске ESM на сервере Exchange. Поскольку открытый ключ, относящийся к данному сертификату, генерируется на локальной машине, сертификат, созданный на станции администратора, не имеет никакого смысла.

Для формирования запроса на получение сертификата при работе с OWA можно использовать Internet Services Manager (ISM) 5.0. Однако задействовать ESM для запроса POP- или IMAP-сертификата проще, поскольку эти сертификаты можно затребовать непосредственно в диалоговом окне Properties виртуального сервера, так что мы им и воспользуемся. Чтобы затребовать сертификат, нужно просто щелкнуть Certificate.

Получение сертификата

Когда кнопку Certificate щелкают на сервере, у которого отсутствует сертификат для специфического протокола, ESM запускает IIS Certificate Wizard. Эта программа проверяет, не запрашивался ли когда-либо SSL-сертификат с помощью Microsoft IIS. Чтобы запросить сертификат для применения в Exchange, необходимы административные привилегии на сервере Exchange, а используемая учетная запись должна иметь право запрашивать сертификат от CA.

После того как экран Welcome закроется, требуется указать, что именно следует сделать. Если запрашивается сертификат для виртуального сервера, у которого сертификат пока отсутствует, пользователю предлагается на выбор присоединить существующий сертификат к виртуальному серверу, импортировать резервную копию сертификата или запросить новый сертификат. Если решено модифицировать существующий сертификат, мастер сертификации предложит сделать выбор между возобновлением сертификата, удалением сертификата с виртуального сервера и запросом на получение нового сертификата. Допустим, нам нужен запрос на получение нового сертификата. После щелчка Create a new certificate выполняется следующая процедура.

  • На странице Delayed Or Immediate Request следует выбрать использование Remote Procedure Call (RPC), чтобы отослать запрос в CA, если он включен, или сохранить запрос в формате Public-Key Cryptography Standards (PKCS) #10 - стандартном формате для запроса сертификата. Если имеется собственный внутренний CA и он функционирует, нужно выбрать Send the request immediately to an online certification authority и нажать Next. При использовании внешнего центра CA или если внутренний CA выключен, необходимо выбрать Prepare the request now, but send it later и нажать Next для генерации файла PKCS #10, который впоследствии будет отослан в CA.
  • Мастер предлагает заполнить имя и длину ключа сертификата, как показано на Экране 1. Хотя Windows 2000 поддерживает работу с ключами длиной 512 разрядов, они слишком коротки для обеспечения безопасной работы; всегда следует выбирать длину ключа по крайней мере 1024 разряда. Затем нужно щелкнуть Next.
Экран 1. Задание имени ключа и длины
  • Мастер просит идентифицировать Organization и Organizational Unit (OU). Названные атрибуты будут закодированы в сертификате, поэтому очень важно указать их правильно. При вводе этой информации следует еще раз убедиться, что все написано верно. И лишь затем можно нажать Next.
  • Мастер просит указать общее имя сайта, Common Name (CN). CN - это полностью определенное имя домена сервера, Fully Qualified Domain Name (FQDN), как оно появляется при работе в Internet. Например, если сервер SMTP - exch-smtp-sea-1.fabrikam.corp, а его внешнее DNS-имя - mail1.fabrikam.com, необходимо указать mail1.fabrikam.com. Если CN станции изменится, потребуется новый сертификат. Необходимо убедиться, что имя DNS указано верно: если допустить ошибку (т. е. если реальное FQDN и данные сертификаты не соответствуют друг другу), клиентские приложения, такие как Microsoft Internet Explorer (IE), будут сообщать, что сертификат неправильный.
  • На странице Geographical Information нужно указать страну (или регион), штат (или провинцию), а также город, который следует прописать в сертификате. Эти данные в дальнейшем не проверяются, но сертификат будет сообщать о них.

До этого момента процедура запроса сертификата не зависит от того, включен CA или выключен. После ввода данных о географическом положении для запроса в оперативном режиме необходимо указать CA из списка доступных программе — инициатору запроса. Если CA, который предполагается использовать, в списке отсутствует, он не может предлагаться для выдачи сертификата. Следует выбрать CA, затем щелкнуть Next. Появится итоговый экран с указанными при формировании запроса параметрами сертификата; нужно щелкнуть Next еще раз для отправки запроса. Если запрос успешно выполняется, сертификат устанавливается автоматически и можно приступать к настройке TLS.

Использование CA независимой компании

Если выбран режим Prepare the request now, but send it later для сертификации через центр CA, находящийся за пределами сети, или через автономный CA, который не интегрирован в Active Directory (AD), дальнейшая процедура будет выглядеть несколько иначе. После получения информации о географическом положении мастер предложит сохранить конфигурацию запроса в файле. Содержимое файла — открытый (незашифрованный) текст в формате Base64 Encoded Pkcs #10. После сохранения этого файла необходимо передать его в соответствующий центр CA, обычно через Web-интерфейс. Детали самого интерфейса зависят от CA. Так, например, различают интерфейсы от Thawte, VeriSign и Comodo?s InstantSSL, выглядят они по-разному. На большинстве Web-сайтов независимых центров сертификации имеется набор инструкций по заполнению требования на сертификат.

Microsoft CA также принимает запросы PKCS #10 через Web-интерфейс. Вот как протекает процесс обращения в CA и установка полученного сертификата.

Экран 2. Выбор запроса
  • На сервере Exchange следует открыть IE и перейти на http://yourCA/certsrv, где yourCA - это имя NetBIOS или имя DNS-центра CA. На экране появляется страница приглашения. Нужно выбрать Request a certificate и нажать Next.
  • На странице Choose Request Type (см. Экран 2) задается вопрос о типе запроса. Поскольку нам требуется сертификат для виртуального сервера и у нас имеется сохраненный запрос, следует выбрать Advanced request и щелкнуть Next. Список User certificate request предназначен для сертификации конечных пользователей.
  • Страница Advanced Certificate Requests предлагает три возможности: сформировать новый запрос по форме, предоставляемой в интерфейсе CA, воспользоваться заранее подготовленным запросом PKCS #10 или запросить сертификат для пользователей смарт-карт. Поскольку мы хотим задействовать существующий запрос, следует выбрать Submit для использования готового файла Base64 Encoded Pkcs #10 или обновить содержимое запроса с помощью файла формата Base64 Encoded Pkcs #7, после чего нажать Next.
  • На странице Submit A Saved Request, представленной на Экране 3, показано, откуда берется подготовленный для обработки запрос. С помощью Notepad нужно открыть файл PKCS #10 на компьютере, с которого была запущена программа браузера. Необходимо скопировать содержимое файла и вставить его в текстовый блок Saved Request. Если сервер сертификации в настройках системы указан как надежный узел, можно воспользоваться ссылкой Browse для поиска и выгрузки файла запроса. Следует щелкнуть Submit, и система отошлет запрос в CA для обработки.
Экран 3. Отправка запроса на сертификат

Как только на странице Submission Confirmation появится соответствующее сообщение, необходимо будет вернуться в CA для проверки статуса запроса и получения созданного сертификата. В зависимости от того, используется корпоративный или автономный CA, сертификат может быть выдан автоматически или же понадобится участие администратора. Дополнительную информацию о различиях корпоративного и автономного CA можно найти в документации Certificate Services в Windows Server Help. Для этого нужно вернуться на страницу CA Welcome по адресу http://servername/certsrv, где servername — имя вашего сервера. Необходимо выбрать Check on a pending certificate и щелкнуть Next. CA показывает список всех запросов, стоящих в очереди на обработку. Следует выбрать свой запрос и щелкнуть Next.

Что появится на экране, зависит от того, выдал ли CA сертификат. Если еще нет, на странице CA будет информация о том, что запрос находится в очереди на исполнение. В этом случае надо еще раз подтвердить запрос. Описание процедуры подтверждения запроса с помощью оснастки Microsoft Management Console (MMC) Certificate Services приведено во врезке «Подтверждение запроса на получение сертификата». Если CA выдал сертификат, появится страница, вид которой приведен на Экране 4.

Экран 4. Проверка выдачи сертификата
  • Страничка может показаться не совсем обычной, поскольку явной ссылки наподобие Download my new certificate здесь нет. Следует щелкнуть Download CA certificate и сохранить файл на сервере Exchange. По умолчанию для ESM сертификат хранится в кодировке Distinguished Encoding Rules (DER), поэтому важно убедиться, что для сохранения в файле указан именно этот формат сертификата.

После сохранения сертификата все готово для его привязки к виртуальному серверу. Нужно вернуться в ESM, найти виртуальный сервер, для которого запрашивался сертификат, и открыть окно свойств сервера. На вкладке Access требуется щелкнуть Certificate для запуска программы IIS Certificate Wizard. В этот момент мастер сообщает статус запроса — pending; выбираем Process the pending request and install the certificate. На следующей странице необходимо указать путь к файлу сертификата, который был загружен, и щелкнуть Next. ESM декодирует сертификат и показывает итоговый экран с его расшифровкой — дополнительное средство проверки перед установкой сертификата. Если все правильно, нужно щелкнуть Next и Finish для запуска процедуры установки сертификата. Требуется убедиться, что сертификат установлен. Для этого на вкладке Access следует проверить статус кнопки Communications — она доступна только в том случае, когда сертификат установлен на виртуальном сервере.

Включение STARTTLS

Получив сертификат, можно приступать к защите трафика SMTP. Здесь есть три варианта: задать использование TLS для всей исходящей почты, для указанных доменов или же потребовать, чтобы все серверы, устанавливающие с вами соединение, использовали TLS. Эти настройки не зависят одна от другой, поэтому их можно задействовать как по отдельности, так и в различных сочетаниях. Чтобы включить TLS для всего исходящего почтового трафика на выбранном виртуальном сервере SMTP, следует перейти на вкладку Delivery на странице Properties виртуального сервера. Затем нужно щелкнуть кнопку Outbound Security — на экране появится одноименное окно (см. Экран 5). Необходимо установить флажок TLS encryption и нажать ОК. Однако следует помнить, что эта настройка проявит себя только при обмене сообщениями Exchange с хостами, поддерживающими TLS. Установленное ограничение имеет нежелательный эффект, который выражается в том, что почтовые сообщения, отправленные на другие хосты (без поддержки TLS), остаются в очереди на доставку неограниченное время или до тех пор, пока не истечет интервал повторной отправки и не будет получен отчет о невозможности доставки отправленного сообщения (Nondelivery Report — NDR).

Экран 5. Включение TLS для исходящей почты

Самый разумный подход — использовать коннекторы SMTP с поддержкой TLS для указанных доменов. Практически во всех ситуациях лучше ограничивать исходящий трафик для тех доменов, о которых наверняка известно, что они поддерживают TLS. Установить, поддерживает ли домен TLS, можно в режиме telnet по состоянию 25-го порта почтового сервера домена, запустив команду SMTP EHLO из командной строки. Если в ответе присутствует STARTTLS, значит, домен поддерживает TLS. Самый простой способ организовать использование TLS заключается в создании коннекторов SMTP для доменов, поддерживающих TLS. Сделать это можно в контейнере ESM Routing Groups. При создании нового коннектора (или изменении свойств существующего) необходимо выполнить два очень важных действия: убедиться, что на вкладке Address Space домены указаны верно, и установить поддержку TLS на вкладке Advanced (для этого нужно перейти на вкладку Advanced, щелкнуть Outbound Security и установить флажок TLS encryption).

Экран 6. Включение TLS для входящей почты

Активизация TLS для входящего трафика не сложнее только что описанной процедуры. Требуется перейти на вкладку Access в окне свойств виртуального сервера и щелкнуть Communication в командной группе Secure Communication. В окне Security, как показано на Экране 6, можно включить поддержку TLS с длиной ключа 40 разрядов (по умолчанию) или указать использование длины ключа 128 разрядов, что я и рекомендую сделать. Нужно иметь в виду, что установка флажка Require secure channel означает буквально следующее: серверы, которые не поддерживают TLS или не могут прочитать настройки TLS вашего сервера, не будут передавать на него почтовые сообщения. Следует быть внимательным, устанавливая Require secure channel; если исходящие сообщения регулярно пропадают, надо задуматься, а стоит ли повышенная секретность потерянных сообщений.

Проблемы при работе с TLS

После засекречивания исходящего трафика нужно обратить внимание на серверные очереди. Некоторые системы (в основном это касается вариаций на тему UNIX Sendmail) будут отказываться устанавливать TLS-соединения с системами, которые имеют «самоподписанные» сертификаты, тогда как другие вначале воспримут STARTTLS, но затем по разным причинам не смогут выполнить условий и настроек безопасности. Если какой-либо сервер не сможет выполнить TLS-подключение и если он или другие системы при этом требуют использования TLS, почтовые сообщения на такие системы отправить не удастся.

Если после включения TLS обнаружилось, что для почтовых сообщений при отправке их на определенную систему создаются резервные копии, нужно проверить, не происходит ли это из-за сбоев TLS. В таком случае следует установить, почему TLS дает сбой. Необходимо проверить журналы SMTP и журналы System и Application. Если это не прояснит ситуацию, нужно связаться с администратором удаленной системы.

Если решить проблему не удается, можно попытаться обойти ее. Хотя ядро Exchange SMTP не поддерживает установки TLS для доменов, можно создать еще один виртуальный сервер SMTP, в котором не используется TLS, а затем связать его с SMTP-коннектором. В свойствах коннектора нужно указать домен, с которым имеются проблемы связи. Поскольку Exchange всегда отдает приоритет явно прописанным маршрутам, почта начнет отправляться по указанному адресу через данный коннектор, и все заработает.

Поль Робишо — старший системный архитектор компании EntireNet, имеет сертификаты MCSE и MCT. С ним можно связаться по адресу: getting-started@robichaux.net.


Подтверждение запроса на получение сертификата

Если проверить статус самого первого запроса на получение сертификата, может оказаться, что статус запроса — pending (в процессе решения). Тогда администратор должен подтвердить обработку запроса. Это довольно типичная ситуация, поскольку при установке центра сертификации Windows Certificate Authority (CA) в автономном режиме выдача сертификатов задерживается до тех пор, пока администратор не выдаст соответствующее разрешение (подтверждение). Таковы установки CA по умолчанию. Для проверки статуса и подтверждения запроса используется оснастка Microsoft Management Console (MMC) Certification Authority, которую необходимо запустить на сервере — центре CA. Чтобы проверить состояние ожидающих выполнения запросов для подтверждения или отказа от их дальнейшей обработки, нужно выполнить следующие действия.

  1. Запустить оснастку Certificate Services (Start, Programs, Administrative Tools, Certificate Authority).
  2. Перейти к узлу CA (дерево консоли, левое окно) и раскрыть его. В узле пять каталогов: Revoked Certificates, Issued Certificates, Pending Requests, Failed Requests и Policy Settings.
  3. Щелкнуть Pending Requests. В правой части консоли перечислены все запросы со статусом pending. Следует открыть контекстное меню запроса и выбрать в зависимости от поставленной задачи All Tasks, Issue или All Tasks, Deny. Важно убедиться, что указан именно тот запрос, который нужен.

Оснастка Certificate Authority позволяет выполнить много различных задач, в том числе отзыв индивидуальных сертификатов (контекстное меню сертификата в каталоге Issued Certificates, затем All Tasks, Revoke Certificate) и настройку политики при выдаче сертификатов. Подробное описание возможностей оснастки Certificate Authority приведено в Windows 2000 Online Help.

Поделитесь материалом с коллегами и друзьями