На днях для внутренних нужд компании потребовалось настроить веб-сервер Apache для авторизации пользователей в приложении с использованием цифровых сертификатов. Причем так, чтобы все было кошерно :) т.е. все сертификаты должны быть подписаны внутренним удостоверяющим центром Microsoft CA.
Стоит признаться, что пришлось несколько повозиться, ибо подробного howto на просторах нашей бескрайней мне найти не удалось. Потому предположил, что шпаргалка на эту тему может оказаться полезной.
Постановка задачи:
требуется настроить авторизацию на веб-сервере Apache с использованием подписанных цифровых сертификатов внутренним удостоверяющим центром Microsoft CA.
name='more'>Решение:
1. Создаем пару ключей (server.key) и запрос сертификата для центра сертификации (request.der)
openssl req -new -inform DER -sha1 -newkey rsa:2048 -nodes -keyout server.key -out request.der -subj "/CN=site.name.ru"
2. В оснастке "Шаблоны сертификатов" на сервере Microsoft CA разрешаем требуемому пользователю (например, себе) осуществлять подачу заявки на шаблон сертификата "Проверка подлинности сервера". Далее, в оснастке центра сертификации, создаем выдаваемый шаблон этого сертификата.
3. Отправляемся по адресу http(s)://<MicrosoftCa>/certsrv/, где выбираем "Запроса сертификата", после чего "расширенный запрос сертификата" и "Выдать запрос, используя base-64 шифрованный файл PKCS #10...". В поле "Сохраненный запрос" передаем содержимое файла request.der, а в выпадающем списке выбираем имя шаблона сертификата, созданного на предыдущем этапе. После чего, сертификат в формате DER-шифрования (certnew.cer) можно переместить в каталог с файлом server.key.
4. Теперь необходимо выполнить:
openssl x509 -in certnew.cer -inform DER -out server.crt
Проверка контрольных сумм. Открытый ключ: openssl x509 -noout -modulus -in server.crt | openssl sha1
Закрытый ключ: openssl rsa -noout -modulus -in server.key | openssl sha1
На этом этапе уже можно использовать стандартную конфигурацию веб-сервера Apache для работы с односторонним SSL.
5. Для того чтобы пользователи могли запрашивать сертификаты проверки подлинности, отвечающие определенным требованиям, может вновь потребоваться шаманство с оснасткой "Шаблоны сертификатов" на сервере Microsoft CA. Есть и другой путь стать владельцем сертификата "Enrollment Agent" и уже самостоятельно раздавать сертификаты конечным пользователям.
6. Чтобы веб-сервер Apache запрашивал клиентские сертификаты, необходимо внести следующие директивы в его конфигурационный файл (предполагается, что остальные директивы дополнены используемой конфигурацией настроек SSL по умолчанию, поставляемой с веб-сервером Apache):
... SSLCACertificateFile /etc/ssl/certs.list
<Directory "/secure/www/">
SSLVerifyClient require
SSLOptions +FakeBasicAuth
AuthName "Auth require"
AuthType Basic
AuthUserFile /etc/ssl/certs.users
require valid-user
... </Directory>
...
, где файл "/etc/ssl/certs.list" содержит открытый ключ (или цепочку сертификатов) удостоверяющего центра Microsoft CA в формате base64 (его можно подгрузить из точки распространения);
файл "/etc/ssl/certs.users" содержит список пользователей, которым разрешен доступ к каталогу "/secure/www/".
Формат файла "/etc/ssl/certs.users":
/DC=local/DC=dc/OU=users/CN=username1/emailAddress=username1@dc.local:xxj31ZMTZzkVA
/DC=local/DC=dc/OU=users/CN=username2/emailAddress=username2@dc.local:xxj31ZMTZzkVA
...
Чтобы получить указанный формат, можно воспользоваться командой:
openssl x509 -noout -subject -in client.crt
Магическая строка "xxj31ZMTZzkVA" всегда неизменна (это результат шифрования строки "password" с помощью алгоритма DES).
Вот собственно и все.
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
Исполнение ФЗ-152 может быть простым и быстрым.
Приходите на вебинар и узнайте, как автоматизировать рутину, избежать штрафов и всегда быть готовым к проверке вместе с Security Vision. Все необходимые документы — одним кликом!