The OpenNET Project / Index page

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

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

"пользовательские SSL-сертификаты"
Сообщение от sek emailИскать по авторуВ закладки on 18-Мрт-04, 12:47  (MSK)
Задача такая: есть Apache+OpenSSL, нужно организовать идентификацию пользователями сервера и наоборот. Для сервера сертификат создал, подписал, все ОК.
Как создать пользовательский сертификат, подписать его (самостоятельно, не прибегая к услугам thawte и проч.) и подсунуть пользовательскому броузеру, дабы идентифицировать этого пользователя. Никак не получается разобраться, и понятной доки найти тоже не могу.
Помогите, плиз, кто может.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "пользовательские SSL-сертификаты"
Сообщение от Xela emailИскать по авторуВ закладки on 22-Мрт-04, 10:53  (MSK)
>Помогите, плиз, кто может.
Приблизительно так:

Настройка 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ообщить модератору | Наверх


Удалить

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




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

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