The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Аутентификация пользователей в Apache+SSL с сертификатами по..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от bardak emailИскать по авторуВ закладки on 11-Фев-04, 09:51  (MSK)
Имеется сервер аод FreeBSD 5.1 установлен Apache с поддержкой SSL на виртуальном хосте. Подскажите как настроить чтобы при входе на виртуальный хост по SSL аутентификация происходила с использованием сертификата клиента.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от Xela emailИскать по авторуВ закладки on 11-Фев-04, 10:15  (MSK)
>Имеется сервер аод FreeBSD 5.1 установлен Apache с поддержкой SSL на виртуальном
>хосте. Подскажите как настроить чтобы при входе на виртуальный хост по
>SSL аутентификация происходила с использованием сертификата клиента.


Настройка Apache и Internet Explorer для работы с SSL по схеме с клиентскими сертификатами.

NB: Все пути указаны для моей установки. Указаные в этом документе файлы на вашей системе
могут находиться в другом месте.

1) Само сабой, устновить на сервер Apache, mod_ssl, openssl.
2) Настроить апач на работу с mod_ssl:
для версии 1.3.х:
добавить в httpd.conf следуюшие строки
LoadModule ssl_module           extramodules/libssl.so
AddModule mod_ssl.c
Include conf/addon-modules/mod_ssl.conf

Сделать VirtualHost с SSL-ем.

<VirtualHost 10.123.123.9:443>
    ServerName          my.ssl.server
    ServerAdmin         root@ssl.server
    DocumentRoot        /www/DEFAULT_WEB
    CustomLog           "/var/log/apache/access.log" combined
    ErrorLog            logs/error.log
    SSLEngine           on
    SSLCipherSuite      ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile  conf/ssl/server.cert.pem
    SSLCertificateKeyFile conf/ssl/server.key.pem
    SSLVerifyClient     require
    SSLVerifyDepth      1
    SSLCACertificateFile conf/ssl/ca.crt
</VirtualHost>

3) Создать сертификат для CA и сервера.
cd /ets/ssl
Редактируем файл openssl.cnf, добавляя туда следуюшию секцию
[ srv_cert ]
basicConstraints=CA:FALSE
nsCertType = server
nsComment = "IFC OLMA Generated Sertificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

Далее, немного меняем скрипт misc/CA.sh добавляя туда такое действие:
-newscert)
    # create a certificate
    $REQ -new -x509 -keyout newreq.pem -out newreq.pem -extensions srv_cert $DAYS
    RET=$?
    echo "Certificate (and private key) is in newreq.pem"
    ;;

В этом же файле указываем в качестве CATOP некий каталог в котором будут
храниться все сертификаты. В моем случае это /etc/ssl/MY

Генерим сертификат CA
cd misc
./CA.sh -newca

После ответов на вопросы и запоминиания пароля, мы получаем CA сертификат в
$CATOP/cacert.pem

Сразу же делаем openssl x509 -in $CATOP/cacert.pem -outform DER -out my.cer
Выкладываем my.cer в доступное место. Этот сертификат будет нужен клиентам, для
того что бы Explorer не пристывал к ним с глупыми вопросами.

Далее делаем сертификат сервера.
./CA.sh -newscert (замечу, что -newscert это нами добавленое действие)
Отвечаем на вопросы. Первый спрошеный пароль, это пароль CA, тот, что мы задали
при генерации сертификата CA. В качестве Common Name указываем имя хоста, в нашем
случае my.ssl.server
Получаем сертификат в файле newcert.pem и ключ в newreq.pem                
Из newreq.pem вырезаем кусок начинающийся с -----BEGIN RSA PRIVATE KEY----- и
вавляем его в /etc/apache/conf/ssl/server.key.pem. Что бы при старте Apache не
спрашивал пароль делаем
openssl rsa -in /etc/apache/conf/ssl/server.key -out /etc/apache/conf/server.key.pem
Файл newcert.pem копируем в /etc/apache/conf/ssl/server.cert.pem
В файл /etc/apache/conf/ssl/ca.crt добавляем содержимое $CATOP/cacert.pem
В последствии, в этот файл помещаем все корневые сертификаты, подписи которых
мы будем доверять. В данном случае, мы доверяем только себе.

В этом месте можно запустить apache.

Созадем клиентский сертификат
./CA.sh -newreq
Отвечаем на вопросы, задаем пароль.
Подписываем запрос.
./CA.sh -sign
Теперь в newcert.pem и newreq.pem лежат сертификат и ключ клиента.
Делаем
openssl pkcs12 -export -in newcert.pem -inkey newreq.tmp -out client1.p12 -name "Наш дорогой клиент"
На этом шаге вводится сначала пароль, который был задан при генерации запроса,
а затем пароль, который будет нужен клиенту для установки сертификата.

4) Настройка Internet Explorer на работу с сертификатми.
На клиенте, получаем наш my.cer. Предположим, что мы его скачали с обычного нашего
веба или ftp-сервера. Кликаем на нем два раза и в появившемся окне сертификата
нажимаем кнопку установить.


Открываем Explorer. Идем в "Свойства Оборзевателя" на вкладку "Общие". Жмем
"Сертификаты", затем "Импорт". Указываем наш файлик client1.p12. Вводим
пароль. И наслаждаемся жизнью.

Вот собствено и все. Файлы с клиентской машины можно удалить. Они больше не нужны. Если, конечно,
клиент не будет переставлять оперционку или работать еще на одном компьютере.
Данная схема конечно не идеальна. Есть еще возможность сделать рутовый сертификат, которым
подписать сертификат CA, и так далее, и так далее...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от Xela emailИскать по авторуВ закладки on 11-Фев-04, 10:16  (MSK)
Маленькое дополнение.
Еще необходимо обратить внимаени на SSLCARevocastionPath и не забыть создать и поддреживать на сервере список отозваных сертификатов.

А вообще, http://www.modssl.org

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от bardak emailИскать по авторуВ закладки on 11-Фев-04, 11:08  (MSK)
Xela подскажи пожайлуста у меня корневой сертификат и сертификат сервера был сгенерирован при сборке Apache+mod_ssl они имеют расширение *.crt а не *.pem как в товоем варианте в чем разница этих форматов.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от Xela emailИскать по авторуВ закладки on 11-Фев-04, 11:20  (MSK)
>Xela подскажи пожайлуста у меня корневой сертификат и сертификат сервера был сгенерирован
>при сборке Apache+mod_ssl они имеют расширение *.crt а не *.pem как
>в товоем варианте в чем разница этих форматов.

Без разницы.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от Xela emailИскать по авторуВ закладки on 11-Фев-04, 11:22  (MSK)
>Xela подскажи пожайлуста у меня корневой сертификат и сертификат сервера был сгенерирован
>при сборке Apache+mod_ssl
Сдается мне, что при сборке mod_ssl генериться self-signed server certificate, а не CA + Server


  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от bardak emailИскать по авторуВ закладки on 11-Фев-04, 11:50  (MSK)
>>Xela подскажи пожайлуста у меня корневой сертификат и сертификат сервера был сгенерирован
>>при сборке Apache+mod_ssl
>Сдается мне, что при сборке mod_ssl генериться self-signed server certificate, а не
>CA + Server

У меня в каталоге лежат два файлика один ca.crt и server.crt, в httpf.conf указан пути к этим файлам

SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
SSLCertificateChainFile /usr/local/apache/conf/ssl.crt/ca.crt
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/ca.crt

Что подскажешь?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от Xela emailИскать по авторуВ закладки on 11-Фев-04, 12:21  (MSK)
>Что подскажешь?
Смотря что надо. Файлики эти скорее всего одинаковые.

А если собираешься делать авторизцию посредством сертификатов, то лучше последовать той инструкции, что я тебе дал выше.

Хуже от этого не будет.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от bardak emailИскать по авторуВ закладки on 11-Фев-04, 12:41  (MSK)
>>Что подскажешь?
>Смотря что надо. Файлики эти скорее всего одинаковые.
>
>А если собираешься делать авторизцию посредством сертификатов, то лучше последовать той инструкции,
>что я тебе дал выше.
>
>Хуже от этого не будет.

Понятно. Xela подскажи пожайлуста в твоей инструкции есть такой скриптик misc/CA.sh, я его у себя не нашел, что внем?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от Xela emailИскать по авторуВ закладки on 11-Фев-04, 12:44  (MSK)
>Понятно. Xela подскажи пожайлуста в твоей инструкции есть такой скриптик misc/CA.sh, я
>его у себя не нашел, что внем?

Вообще, этот скриптик поставляется вместе с OpenSSL, и странно что у тебя его нет. Поищи по лучше.

В скрипте базовая автоматизация создания/подписывания ключей/сертификатов.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Аутентификация пользователей в Apache+SSL с сертификатами по..."
Сообщение от bardak emailИскать по авторуВ закладки on 11-Фев-04, 13:10  (MSK)
>Вообще, этот скриптик поставляется вместе с OpenSSL, и странно что у тебя
>его нет. Поищи по лучше.
>
>В скрипте базовая автоматизация создания/подписывания ключей/сертификатов.

Спасибо все нашел, буду пробовать.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру