Сертификаты могут использоваться для шифрования потока коммуникации между двумя конечными точками, которые могут быть как клиентами, так и серверами. Сертификаты также могут использоваться этими конечными точками для собственной аутентификации друг на друге. Существует несколько компонентов Exchange 2007, которые полагаются на сертификаты при шифровании, аутентификации или в обоих случаях. В первой части я предоставил обзор различных компонентов Exchange, использующих сертификаты и цели использования этих сертификатов. Я также подробно рассказал о функциях генерируемых по умолчанию самоподписных сертификатов. Во второй части цикла я рассказал о требованиях к сертификату, которые следует учитывать, при получении сертификатов. И в завершение, в третьей части этого цикла статей я бы хотел подробно рассмотреть различные команды оболочки управления Exchange Management Shell, которые позволяют создавать, управлять и удалять сертификаты Exchange.
Команды Exchange для управления сертификатами
Оболочка Exchange Management Shell предлагает набор команд, которые можно использовать для управления сертификатами в вашей среде Exchange:
Enable-ExchangeCertificate
Export-ExchangeCertificate
Get-ExchangeCertificate
Import-ExchangeCertificate
New-ExchangeCertificate
Remove-ExchangeCertificate
Во второй части этого цикла я описывал примерную организацию Exchange, для которой нам нужно получить два сертификата Exchange, как говорится в таблице 1 ниже.
Таблица 1: Требования сертификатов
Общее имя (Common Name) | Имена Subject Alternative Names | Требуется для служб (Required for Services) |
Webmail.proexchange.global | Webmail.ProExchange.Global Webmail.BelgianBeers.Rock Autodiscover.ProExchange.Global Autodiscover.BelgianBeers.Rock Ex2007EE.ProExchange.Global Ex2007EE Ex2007SE.ProExchange.Global Ex2007SE | Outlook Web Access Outlook Anywhere Autodiscover EWS (Out of Office, Free and Busy) |
Edge.proexchange.dmz | ProExchange.Global BelgianBeers.Rock | EdgeSync Opportunistic TLS Domain Security |
New-ExchangeCertificate
В оболочке Exchange Management Shell команда New-ExchangeCertificate может использоваться для создания нового самоподписного сертификата или нового запроса сертификата, который можно направить в ваш центр сертификации (Certification Authority) и после этого импортировать и включить для SMTP (Transport Layer Security (TLS)) и/или IIS, POP, IMAP, и UM (так называемых служб Secure Sockets Layer (SSL)).
Ключевым параметром, который заставит команду New-ExchangeCertificate создать новый самоподписной сертификат или сгенерировать запрос, является GenerateRequest. Если вы опускаете этот параметр, новый самоподписной сертификат будет создан Exchange, как показано на рисунке 1. Если вы добавляете этот параметр, Exchange создаст запрос сертификата на PKI сертификат (PKCS #10) в локальном хранилище запросов.
Рисунок 1: Создание нового самоподписного сертификата (Self-Signed Certificate)
При создании запроса сертификата, можно добавлять следующий список параметров:
SubjectName - вводится в виде X.500 отличительного имени (distinguished name), содержащего самое важное свойство сертификата, общее имя. Субъектное имя (subject name) представляет собой поле, которое используется DNS службами, и, по сути, будет заверять службы с поддержкой DNS о том, что сертификат действительной был издан на запрос для определенного сервера или имени домена;
DomainName - используется для добавления любых дополнительных имен Subject Alternative Names к сертификату. Можно добавлять несколько имен доменов, разделенных запятой, но длина каждого имени домена не должна превышать 255 символов;
IncludeAcceptedDomains - добавит все принятые домены, настроенные в организации Exchange, в качестве имен subject alternative name (когда имена определены с использованием параметра DomainName и ключа IncludeAcceptedDomains, они появятся только однажды в запросе сертификата)
IncludeAutoDiscover - добавит каждое имя домена в виде имени subject alternative name autodiscover.domainname. Вот два примечания: - когда имена определены с помощью параметра DomainName и с помощью ключа IncludeAutodiscover, они появятся лишь однажды в запросе сертификата - этот параметр можно добавлять только при выполнении команды на сервере Exchange Client Access
Keysize - может использоваться для указания различных размеров RSA публичного ключа, связанного с сертификатом во время его создания. Если опустить этот параметр, будет использовано значение по умолчанию в 2048 бит, однако это значение можно изменять на 1024, 2048 или 4096 бит;
Path - указывает место, в котором будет храниться запрос сертификата. Нужно указать путь и имя файла (тип файла - .req);
PrivateKeyExportable - может использоваться для генерирования сертификата (и/или запроса) с экспортируемым частным ключом. Если не используется, частный ключ не будет экспортируемым. Добавление этого параметра и указание значения как True позволит вам экспортировать сертификат и импортировать его на другие серверы Exchange и/или ISA модули;
BinaryEncoded - может использоваться для изменения умолчания посредством Base64 зашифрованного экспортированного файла в DER-зашифрованный файл;
Services - может использоваться при создании нового самоподписного сертификата для определения того, какие службы (IIS,SMTP,POP,IMAP,UM) будут использовать новый сертификат. Умолчанием для этого параметра является SMTP (как видно из рисунка 1), указание значения None позволит создать новый самоподписной сертификат без включения для каких-либо служб;
FriendlyName - может использоваться для определения другого имени вашего сертификата, а не того, которое используется по умолчанию - "Microsoft Exchange", оно будет ограничено до 64 символов.
Используя нашу организацию Exchange, нам нужно создать два запроса сертификата. Как видно из рисунка 2, оба запроса сертификата будут сгенерированы на нашем сервере Exchange HUB/CAS/MBX, под названием Ex2007EE. Один запрос сертификата, под названием secure_smtp.req , будет использоваться для SMTP, а второй, под названием secure_client.req, - для IIS и UM. Чтобы убедиться в том, что оба сертификата можно будет экспортировать и предоставить к ним доступ, частный ключ будет определен, как экспортируемый.
Рисунок 2: New-ExchangeCertificate
Эти два запроса сертификата теперь можно доставить в выбранный центр сертификации, и после получения сертификатов, их можно будет импортировать и включить для требуемых служб.
Включение EdgeSync, смотрите следующую статью TechNet
При включении EdgeSync вам нужно учитывать информацию из следующей статьи TechNet "EdgeSync Fails with Event ID 10104", в которой четко говориться, что серверы Hub и Edge Transport не поддерживают использование одного и того же сертификата!
Import-ExchangeCertificate
Команда Import-ExchangeCertificate позволяет импортировать сертификат, что может быть полезно, когда:
вы хотите импортировать ранее экспортированный сертификат
вы хотите импортировать файл сертификата, сгенерированный центром сертификации
Есть два параметра, которые нужно помнить при выполнении команды Import-ExchangeCertificate:
Password - для введения пароля, который использовался для шифрования частного ключа во время экспортирования сертификата
Path - для указания места, где вы хранили сертификат, полученный с ЦС
Когда сертификат импортирован, вам нужно включить его для службы, выполнив команду Enable-ExchangeCertificate.
Enable-ExchangeCertificate
Выполнив команду Enable-ExchangeCertificate, вы включите сертификат для одной или нескольких служб путем обновления метаданных, хранящихся в сертификате.
Каждая служба имеет свои требования к метаданным, поэтому у них будут обновляться различные свойства:
POP3-IMAP4: msExchPopImapX509CertificateName свойство будет обновлено;
IIS: Default Web Site будет обновлен;
SMTP: учетной записи Network Service будут даны разрешения доступа чтения (Read access) к соответствующему частному файлу ключа в каталоге Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys;
UM: свойства сертификата будут обновлены для включения Unified Messaging.
После получения двух запрошенных сертификатов, на рисунке 3 видно, что они импортированы, и той же сроке видно, что они включены для требуемых служб.
Увеличить
Рисунок 3: Import-ExchangeCertificate
Get-ExchangeCertificate
Для получения списка всех сертификатов, которые доступны в вашем локальном хранилище сертификатов, можно выполнить команду Get-ExchangeCertificate. Можно использовать эту команду для обзора полей сертификатов, которые используются такими службами Exchange (рисунок 4), как:
Issuer: кто выпустил сертификат
Subject: Общее имя (Common Name) сертификата
CertificateDomains: имена Subject Alternative Names определенные на сертификате
NotBefore: определяет дату и время, с которой сертификат может использоваться
NotAfter: определяет дату и время истечения срока действия сертификата
IsSelfSigned: для просмотра того, является ли сертификат самоподписным или нет
RootCAType: определяет тип ЦС, издавшего сертификат
Services: для каких служб сертификат включен
Status: определяет действительность/недействительность сертификата
Thumbprint: свод данных сертификата
Увеличить
Рисунок 4: Get-ExchangeCertificate (SMTP)
Рисунок 5: Get-ExchangeCertificate (IIS,POP,IMAP)
Export-ExchangeCertificate
Чтобы экспортировать сертификат (будь-то в целях создания резервной копии или для использования на других серверах), можно воспользоваться командой Export-ExchangeCertificate. Выполнение команды экспортирует сертификат exchange и его частный ключ по умолчанию.
Можно также использовать эту команду для экспортирования запроса сертификата. При выполнении этой команды, Exchange обследует экспортируемый сертификат (используя его thumbprint), и если это запрос сертификата, он экспортируется как PKCS #10 файл. Если это сертификат, то сертификат будет экспортирован как PKCS #12 файл.
Есть два параметра, которые можно использовать при выполнении команды Export-ExchangeCertificate:
Path: для определения целевого каталога и имени файла для хранения экспортированного сертификата, не забудьте ввести расширение файла .req для экспортирования запроса сертификата, и .pfx или .p12 для экспортирования сертификата;
Password: для защиты частного ключа, нужно вводить как защищенную строку (можно использовать различные способы указания пароля, как показано на рисунках 6 и 7).
В нашей организации Exchange мне нужно экспортировать оба сертификата, чтобы убедиться, что их можно будет использовать несколько раз. Сначала я экспортирую сертификат, используемый для обеспечения TLS, и импортирую его на сервер с ролью Edge, а также включу его для SMTP, как показано на рисунке 6. Затем я экспортирую сертификат, используемый для IIS, POP и IMAP, и импортирую его на сервер с ролью Unified Messaging Server, чтобы включить его для UM, как показано на рисунках 7 и 8, и импортирую его и настрою ISA на использование сертификата для публикации Outlook Web Access и Outlook Anywhere.
Рисунок 6: Export-ExchangeCertificate (SMTP)
Рисунок 7: Export-ExchangeCertificate (IIS,POP,IMAP)
Рисунок 8: Import-ExchangeCertificate (UM)
Remove-ExchangeCertificate
Как только мы включили необходимые сертификаты для всех служб, можно удалить ненужные сертификаты с сервера Exchange и локального хранилища сертификатов, выполнив команду Remove-ExchangeCertificate. Если удаляемый сертификат хранится в службе каталогов Active Directory, этот объект также будет удален.
На рисунке 9 показано, как можно удалить все самоподписные сертификаты за один раз.
Рисунок 9: Remove-ExchangeCertificate (Self-Signed)
Проверка конфигурации сертификатов
После получения требуемых сертификатов и настройки служб Exchange на их использование, пришло время протестировать конфигурацию на предмет корректной работы.
На рисунке 10 показано, что Outlook Web Access и Outlook Anywhere работают отлично, используя требуемый сертификат.
Рисунок 10: Свойства сертификата
И желаемая функция Domain Security в организации Sunshine.Edu настроена, как и было запланировано, как видно из рисунков 11 и 12.
Рисунок 11: Domain Security
Рисунок 12: Domain Security
Заключение
В первой части цикла статей о сертификатах и Exchange мы увидели, какие компоненты Exchange 2007 используют сертификаты, и какими характеристиками обладают самоподписные сертификаты. Во второй части я показал вам, как можно сделать самоподписные сертификаты доверенными, и какие имена нужны вашим сертификатам Exchange, прежде чем вы сможете успешно использовать их. В третьей части я подробно описал различные команды оболочки Exchange Management Shell, которые можно использовать для создания, управления и удаления сертификатов Exchange.