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 авторизация по сертификатам так и не работает...