SSL-сертификат для бедных. Часть 2
В первой части статьи были рассмотрены создание собственного центра сертификации и выпуск сертификата для нашего Web-сервера.Один из читателей так же предложил не париться с созданием, а выпустить себе бесплатный сертификат.Без сомнения предложенный Xelon'ом бесплатный сертификат от Comodo избавляет посетителей сайта
от необходимости совершать дополнительные телодвижения по установке корневого сертификата в браузер, однако сегодня мы рассмотрим пример авторизации пользователей в защищенной зоне сайта с использованием клиентского сертификата. Создавать свой CA для этого все-таки придется , поэтому будем считать что работа проделана не зря.Собственно для создания клиенсткого сертификата переходим в директорию нашего ЦС и командуем
# openssl req -new -newkey rsa:512 -nodes -out client.csr -keyout client.key# openssl ca -batch -out client.crt -infiles client.csr
Первая команда генерирует запрос на сертификат, вторая по этому запросу выдает подписанный сертификат.Дабы получить сертификат в удобоваримом для браузеров виде коммандуем
# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 \-name "my_client_certificate" -passout:q1w2e3
q1w2e3 - пароль его нужно будет ввести при импорте в браузер.В упомянутом в предыдущей заметке наборе скриптов от Глеба Пахаренко, все эти операции заавтоматичены.Теперь собственно сама авторизация.Ищем в конфиге нашего web-сервера свой https-сайт, проверяем наличие указания на файл корневого сертификата.Если у Вас apache, то это примерно вот так
SSLCACertificateFile /path/to/ca.crt
В директории, которую нужно защитить авторизацией по сертификату создаем .htaccess со следующим содержанием
SSLVerifyClient require
Пытаемся зайти на страницу, нам откажут. Импортируем сертификат, заходим.Собственно все.P.S. В связке nginx+apache22 на сервере с установленной панелью ISPmanager можно перенаправить все запросы на безопасную версию сайта добавив в нужный контейнер server одну строчку примерно вот так
....server_name domain.ru;rewrite ^(/.*)$ https://$host$1 permanent;....
З.З.Ы. В Google Chrome авторизация по сертификатам так и не работает...
Комментарии