Настройка Web-services под Apache 2.0, 2.2 или IIS7.0 с использованием SSL
С чего начинается интернет. Конечно же Apache, наверное это единственный "живой" веб-сервер, который появился на заре развития интернета, и который продолжает жить и здравствовать. Ну, собственно, это была полемика, а мы перейдем к практике.
Итак, обзаводимся инструментами
- Собственно, сам сервер Apache. Идем на сайт http://httpd.apache.org/download.cgi. Поддерживаемые версии на сегодня это 2.0.X и 2.2.X (да-да, 2.2 ветка уже тоже поддерживается). Внимание!!!: хотим SSL? Конечно. И не забываем, что нам надо взять соответствующий установочный пакет "Win32 Binary including OpenSSL 0.9.8m (MSI Installer)".
- Ваш любимый блокнот, где придется немного подредактировать конфигурационные файлы Apache.
- Хотим SSL? Конечно же, безопасность превыше всего. Тогда идем на http://www.slproweb.com/products/Win32OpenSSL.html (официальный сайт библиотек OpenSSL для Windows). И скачиваем оттуда версию "Win32 OpenSSL v1.0.0a Light" (для тех, кто в 64-битном танке, там есть версия "Win64 OpenSSL v1.0.0a Light"). И не в коем случае не берите полную версию - она абсолютно не нужна.
Да, чуть не забыл. Вы абсолютно не должны смущаться, по поводу разных версий OpenSSL в установочном пакете Apache и в поставке Win32 OpenSSL Light. - Ну и естественно, нужен пациент. То есть Terrasoft версии 3.3.2, веб-сервисы которого мы и будем подключать к Apache 2.X.X.
Краткое отступление. Когда писалась данная заметка, я тестировал все нижеописанное в следующей конфигурации: Windows Server 2008 32-bit, Apache 2.2.15 32-bit with SSL, IIS 7.0 (по умолчанию, я установил все расширения), Terrasoft XRM 3.3.2.107. Соответственно, все мои изыскания были проведены для данных версий. Но, скажу честно и откровенно, должны заработать и в других комбинациях.
Установка Apache.
Все до ужаса просто. Кликаем всегда далее и вот у нас стоит Apache, и он даже запустился. Так, только прежде чем ставить Apache, давайте посмотрим вокруг себя и попытаемся найти того, кто (или что) нам обязательно будет мешать. Вот некоторые кандидаты, замеченные Вашим покорным слугой.
Кандидат №1 - это конечно же уже установленный и запущенный Apache (другой версии). Если он Вам нужен - Вы и так уже знаете как его ставить, а если не нужен - удаляйте , удаляйте - мы же все равно ставим новый.
Кандидат №2 - это IIS. А-я-я-й. Мы же Apache ставим - зачем нам IIS. Поэтому необходимо удалить IIS с компьютера, чтобы он Вам не мешал и "не портил всю картину".
Как его удалять - ну это уже задание на дом - для изучения всяких-таких руководств от Microsoft.
Кандидат №3 - Skype. Ага, а что ему делать на сервере? Ну если он все-таки там нашелся, необходимо в его настройках отключить использование 80 и 443 портов (а он, редиска, использует их по умолчанию - зачем, это уже другая песня).
Итак, смотрим на скриншоты и вперед. В основном, установка идет со значениями по умолчанию.
Шаг №1
Шаг №2
Шаг №3
Шаг №4. Обратите внимание на значение в поле ServerName. Если Вы не будете использовать виртуальный хостинг, то здесь должно быть прописан полный адрес вашего сервера.
Также, по умолчанию, ставим Apache как службу системы с автоматическим запуском и прослушиванием порта 80.
Шаг №5
Шаг №6
Шаг №7
Проверить работоспособность можно, если перейти по адресу http://127.0.0.1/ или по адресу http://имя_Вашего_сервера>/. Если Вы увидите след. картинку, то можно считать, что Apache установлен, запущен и работает нормально.
Установка Terrasoft XRM
Здесь я даже останавливаться не буду. Это итак разложено по полочкам в "Руководстве администратора". Единственный момент (а оказывается многие забывают) - это надо настроить путь к папке Settings в файле RunSettings.xml
К примеру, после установки Terrasoft XRM со значениями по умолчанию, путь к папке Settings будет C:\Program Files\Terrasoft\Settings\.
После этого, необходимо запустить TSClient.exe и настроить подключение к конфигурации.
Настройка Web-сервисов под Apache
Итак, Apache есть, Terrasoft XRM установлен. Самое время подключить web-сервисы. Открываем в любимом редакторе файл httpd.conf, который находиться в папке conf корневой папки установки Apache (если ставили по умолчанию, то это будет C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf) и в конец файла добавляем следующие строки (для Apache 2.2.x)
"С:\Program Files\Terrasoft\Bin\TSWebServicesServerLibraryApache22.dll"
SetHandler TSWebServicesServerLibraryApache22-handler
>
Для Apache 2.0.x, строки будут следующие
"С:\Program Files\Terrasoft\Bin\TSWebServicesServerLibraryApache20.dll"
SetHandler TSWebServicesServerLibraryApache20-handler
>
Название виртуальной директории (в данном примере TSWebServices) Вы можете придумать самостоятельно так, как Вам нравится.
Чтобы изменения вступили в силу, необходимо произвести перезапуск Apache сервера. Если по быстрому, то в трее у Вас должен быть значок Apache Monitor , кликнув по которому откроется окно программы, в котором можно сделать перезапуск (остановку/запуск) сервера Apache. Если перезапуск прошел успешно, значит модуль веб-сервисов загрузился успешно. Можно проверить работоспособность, если перейти по адресу http://127.0.0.1/TSWebServices/ (где вместо 127.0.0.1 может быть записан полный адрес сервера, а TSWebServices - это название виртуальной папки, которое Вы указали в httpd.conf). Вы должны увидеть следующую картинку
Увидели - вуаля. Web-сервисы под Apache запущенны и работают. Далее необходимо настроить клиент Terrasoft, но останавливаться на этом не буду, так как в руководстве данный материал полностью раскрыт и освещен.
Настройка SSL.
Вот собственно мы и добрались до самого главного. То есть до безучастности. Конечно, многие могут возразить, зачем, мол, веб-сервисы да еще и через SSL - не проще ли поднять VPN или заходить на удаленный рабочий стол.
Да, неверное многие так и делают, но дискуссии на тему что лучше мы оставим другим, а сейчас просто займемся настройкой SSL под Apache.
Но сначала немного теории. Итак, для того чтобы обзавестись защищенным каналом, необходимо наличие сертификатов. А здесь начинаются сплошные непонятные слова и действия. (Да, можно и бубен прикупить, с надписями SSL). Но мы сейчас быстро разложим все по полочкам.
Собственно, сертификат - это заверенный удостоверяющим центром электронный (или печатный, что очень редко) документ, подтверждающий принадлежность владельцу открытого ключа или каких-либо атрибутов. А теперь, чтобы не надо было ломать мозги, представим себе, что сертификат - это какой либо документ (например копия Вашего паспорта) содержащий Ваши данные и это все заверено государственным нотариусом. Ведь ни у кого не будет сомнений, что это копия действительно Вашего паспорта, а не дяди Васи со стороны. То есть, удостоверяющий центр - это такая организация, которой все доверяют. Довольно известные компании Thawte, VeriSign очень давно работают в этом сегменте, что позволяет им довольно интенсивно влиять на многие аспекты сертификации в целом.
Для нас же с Вами, сертификат - это некий файл в формате X.509 (может быть текстовым, а может и не быть :-)) который содержит информацию про Вас, и информацию про того, кто сертификат "заверил". Понятие "заверил" не зря взято в кавычки - это значит что в Вашем сертификате стоит электронная цифровая подпись той компании, которая подтвердила правдивость Ваших данных. Собственно, как мокрая печать нотариуса на документах.
Также существуют корневые сертификаты (CA). Корневой сертификат - это сертификат, который заверен сам собой. Напрашивается вопрос - зачем сертификат который заверен своей же организацией. А вот ответ на самом деле очень простой. Если каждый сертификат должен быть кем-то заверен (далее по тексу буду использовать выражение "подписан", так как в мире сертификатов оно больее полно раскрывает смысл), то где-то должно быть начало этой цепочки. Так вот, начало этой цепочки - это и есть корневой сертификат.
Кроме всего этого, существуют публичные списки корневых сертификатов. Это списки тех сертификатов, которые либо включены в операционную систему либо встроенны в приложение (например, браузер Mozilla Firefox). Используя эти публичные сертификаты (CA) приложение может проверить "на действительность и правильность" любой сертификат. В случае с браузерами - мы видим "позеленевшую" адресную строку, когда заходим на любой сайт HTTPS.
Итак, было немного теории, теперь перейдем к практике.
Для начала подготовим инструменты - это минимальный набор файлов: openssl.exe, libeay32.dll, ssleay32.dll и главное - openssl.cfg. Можно забрать архивом прикрепленных файлах. Распаковываем. Конечно, туда, куда Вам больше нравится.
Теперь вкратце о том, что необходимо сделать. Так как мы будем генерировать (создавать) все сами - (денег нет, не дают, нет необходимости покупать у гигантов CA) - то нам необходимо будет сгенерировать два сертификата. Первый - это RootCA - то есть наш корневой сертификат, который мы сами же и подпишем. Второй - это сертификат сервера, на котором будут работать вебсервер.
Чтобы долго не расписывать что, как и почем, в архиве есть файл gen.cmd (для любознательных - можете заглянуть внутрь). Запускаем и идем по шагам.
Итак, какие данные у вас спросит скрипт.
Код страны - двухбуквенное обозначение, вводить необходимо в верхнем регистре.
Название компании. Обязательно латиницей. На данный момент пробелы в названии не поддерживаются (хотя для любопытных - можете попробовать).
Название сервера - это должно быть полное FQDN имя домена, для которого будет сгенерирован сертификат. Обычно - это полное название компютера, на котором установлен Apache2 (или IIS). Если это не так - ну тогда Вам прямая дорога к вашему системному администратору (если это не Вы) - он должен быть в курсе.
Введенные данные будут записаны в файл info.txt.
Пароли - первый для приватного ключа от CA, второй - для приватного ключа сервера. Минимум - 4 символа. (Сохранены будут с файлах с расширением .pwd)
После этого будут сгенерированны ключи и сертификаты. При создании экспортных версий (для MS) - будут запрошены пароли экспорта - эти пароли будут запрошены при импорте сертификатов в MS.
Да, если у Вас что-то пошло не так, там есть простенький файл clean.cmd - который удалит все сгенерированные и промежуточные данные. (Внимание, приватные ключи тоже будут удалены).
Продолжение следует...
Зачмечательный пост.+1.
К слову о Skype на сервере. Его не обязательно удалять, главное не запускать до старта самого веб-сервера, а потом можно, скайп смотрит не занят ли 80й порт и если занят, то пользует другой (какой не помню).
У многих, кто пытается протестировать веб-сервисы с Apache'м на локальной машине Skype либо уже запущен, либо в автостарте. По крайней мере, если Apache не заработает - это один из вариантов, почему он не работает.
Отмечу особый изящный стиль изложения, ну и конечно высокий уровень подготовки материала. Ты сэкономил многие часы работы нашим коллегам и Клиентам!
Фраза про 64-битный танк очень актуальна.
Дополню немного этот материал.
Корневой сертификат и сертификат сервера сгенерирован, все хорошо. Хотелось бы немного рассказать об установке сертификатов на сервер IIS и настройке соединения на клиентских машинах.
Итак, по порядку.
После того, как вы сгенерировали сертификаты, вам необходимо их установить на сервер.
При установке сертификатов очень важен порядок их установки.
Первым устанавливаем корневой сертификат (CA, файл ca.crt). Для этого открываем этот сертификат встроенной программой просмотра сертификатов и нажимаем кнопочку "Установить". Установить корневой сертификат нужно в Trusted Root Certification Authorities\Local Computer (категория доверенных корневых центров сертификации)
Далее устанавливаем сертификат сервера, который подписан уже установленным корневым сертификатом. Для этого заходим в панель управления IIS, заходим в раздел управления сертификатами и устанавливаем серверный сертификат server.p12 (формат .p12 аналогичен формату .pfx). При этом этот сертификат уже будет доверенным, т.к. он подписан корневым сертификатом, которому вы доверяете.
После этого в настройках привязки сайта к портам и протоколам (Bindings) для настройки SSL указываем только что импортированный серверный сертификат:
Теперь настроим Terrasoft на клиентской машине.
Для этого в настройках SSL прописываем:
Файл корневого сертификата - путь к файлу корневого сертификата ca.crt, который вы предварительно скопировали на клиентскую машину.
Данные о том кем и кому выдан этот сертификат берем из его свойств:
Внимательно переписываем эти данные, т.к. сравнение происходит по строгому совпадению.
Все, ваши веб-сервисы для работы через защищенное соединение SSL настроены!