новости книги игры
библиотека программы форум

11.05 11.10 1C 2010 2011 3d Acer action Additional Adobe alt linux ALT линукс в школу altlinux amarok AMD Android Apache apple apt-get ArchLinux asplinux ASUS Asus Eee PC ATI audio avi backup bash beta big buck bunny bind bittorrent blender bluetooth bsd c C++ Calibre Canonical cd Cedega CentOS chrome chromium cisco clamav CLI Damn Small Linux debian Dell desktop dns DOOM DOS download driver dvd e-book Eclipse emacs embedded linux enterprise EPUB Etersoft exim ext2 ext3 ext4 faq FB2 fedora fedora10 fedora8 fedora9 fedoracore firefox firefox3 firewall Flash Fluxbox flv free FreeBSD freeware ftp games gcc gentoo GIMP gnome GNU gnu linux google GPL GRUB gtk GTK+ hackday hdd HDR


   

«    Август 2008    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Какой браузер вы используете?

Firefox
Opera
Mozilla
Internet Explorer
Другой



LinuxTwitter:




Архив:

Октябрь 2011 (91)
Октябрь 2010 (42)
Апрель 2010 (10)
Январь 2010 (29)
Декабрь 2009 (6)
Ноябрь 2009 (31)
Октябрь 2009 (20)
Апрель 2009 (19)
Март 2009 (1)
Февраль 2009 (20)
Январь 2009 (31)
Декабрь 2008 (71)
Ноябрь 2008 (89)
Октябрь 2008 (91)
Сентябрь 2008 (113)
Август 2008 (168)
Июль 2008 (156)
Июнь 2008 (147)
Май 2008 (191)
Апрель 2008 (213)
Март 2008 (197)
Февраль 2008 (195)
Январь 2008 (112)
Декабрь 2007 (146)
Ноябрь 2007 (94)




Партнёры:


 

Добавить в Google Reader
Читать в Yandex.Ленте
Mobile LinuxOpen (test version)

Apache + mod_ssl 

 Мне нравится:


 

Разобрался я как прикрутить к Апачу SSL и авторизовывать юзеров по клиентским сертификатам. Весьма удобно, должен заметить. В общем и целом схема проста:http://silverghost.org.ua/2007/12/14/apache-mod_ssl/

  1. Создать собственный доверенный сертификат (Certificate Authority), для того чтобы с помощью него подписывать и проверять клиентские сертификаты.
  2. Создать клиентские сертификаты, подписанные доверенным сертификатом, для последующей передачи их клиентам.
  3. Сконфигурировать веб-сервер для запроса и проверки клиентских сертификатов.

Начнем с первого пункта:

Собственный доверенный сертификат (Certificate Authority — далее CA) необходим для подписи клиентских сертификатов и для их проверки при авторизации клиента веб-сервером. С помощью приведенной ниже команды создается закрытый ключ и самоподписанный сертификат.

openssl req -new -newkey rsa:1024 -nodes -keyout ca.key -x509 -days 500 -subj /C=RU/ST=Msk/L=Msk/O=My Inc/OU=Sale/CN=bla/emailAddress=usr@dom.ru -out ca.crt

Описание аргументов:

req
Запрос на создание нового сертификата.
-new

Создание запроса на сертификат (Certificate Signing Request — далее CSR).
-newkey

rsa:1024


Автоматически будет создан новый закрытый RSA ключ длиной 1024 бита. Длину ключа можете настроить по своему усмотрению.
-nodes

Не шифровать закрытый ключ (См. примечание выше).
-keyout

ca.key


Закрытый ключ сохранить в файл ca.key.
-x509

Вместо создания CSR (см. опцию -new) создать самоподписанный сертификат.
-days

500


Срок действия сертификата 500 дней. Размер периода действия можете настроить по своему усмотрению. Не рекомендуется вводить маленькие значения, так как этим сертификатом вы будете подписывать клиентские сертификаты.
-subj

/C=RU/ST=Msk/L=Msk/O=My Inc/OU=Sale/CN=bla/emailAddress=usr@dom.ru


Данные сертификата, пары параметр=значение, перечисляются через ’/’. Символы в значении параметра могут быть «подсечены» с помощью обратного слэша "", например «O=My Inc». Также можно взять значение аргумента в кавычки, например, -subj «/xx/xx/xx».
Описание параметров:
С — Двухсимвольный код страны (Country). Необязательный параметр.
ST — Название региона/области/края/республики/… (State Name). Необязательный параметр.
L — Название города/поселка/… (Locality Name). Необязательный параметр.
O — Название организации (Organization Name). Необязательный параметр.
OU — Название отдела (Organization Unit). Необязательный параметр.
CN — Имя сертификата, при создании серверных сертификатов используется доменное имя сайта, для клиентских сертификатов может быть использовано что угодно (Common Name). Обязательный параметр. Максимальная длина 64 символа.
emailAddress — почтовый адрес (E-mail address). Необязательный параметр. Максимальная длина 40 символов.

Необязательные параметры могут быть пропущены, например, /C=RU/CN=blabla/emailAddress=user@domain.ru.

-out ca.crt

Сертификат сохранить в файл ca.crt.

В результате выполнения команды появятся два файла ca.key и ca.crt.

Далее нам необходимо сгенерировать клиентские сертификаты, что тоже не сложно.

Создайте конфигурационный файл с именем ca.config следующего содержания.

[ ca ]
default_ca = CA_CLIENT # При подписи сертификатов

# использовать секцию CA_CLIENT
[ CA_CLIENT ]
dir = ./db # Каталог для служебных файлов
certs = $dir/certs # Каталог для сертификатов
new_certs_dir = $dir/newcerts # Каталог для новых сертификатов
database = $dir/index.txt # Файл с базой данных

# подписанных сертификатов
serial = $dir/serial # Файл содержащий серийный номер

# сертификата

# (в шестнадцатиричном формате)
certificate = ./ca.crt # Файл сертификата CA
private_key = ./ca.key # Файл закрытого ключа CA
default_days = 365 # Срок действия подписываемого

# сертификата
default_crl_days = 7 # Срок действия CRL
default_md = md5 # Алгоритм подписи
policy = policy_anything # Название секции с описанием

# политики в отношении данных

# сертификата
[ policy_anything ]
countryName = optional # Код страны — не обязателен
stateOrProvinceName = optional # ……
localityName = optional # ……
organizationName = optional # ……
organizationalUnitName = optional # ……
commonName = supplied # …… — обязателен
emailAddress = optional # ……

Создайте структуру каталогов и файлов, соответсвующую описанной в конфигурационном файле

# mkdir db
# mkdir db/certs
# mkdir db/newcerts
# touch db/index.txt
# echo «01» > db/serial

Для создания подписанного клиентского сертификата предварительно необходимо создать запрос на сертификат, для его последующей подписи. Аргументы команды полностью аналогичны аргументам использовавшимся при создании самоподписанного доверенного сертификата (см. $1), но отсутсвует параметр -x509.

# openssl req -new -newkey rsa:1024 -nodes -keyout client01.key -subj /C=RU/ST=Msk/L=Msk/O=Inc/OU=Web/CN=usr/emailAddress=usr@dm.ru -out client01.csr

В результате выполнения команды появятся два файла client01.key и client01.csr.

При подписи запроса используются параметры заданные в файле ca.config (см. $2.1.)

# openssl ca -config ca.config -in client01.csr -out client01.crt -batch

Описание аргументов:

ca
Подпись запроса с помощью CA.
-config

ca.config

Использовать конфигурационный файл ca.config.
-in

client01.csr

CSR находится в файле client01.csr
-out

client01.crt

Сохранить сертификат в файл client01.crt
-batch
Не спрашивать подтверждения подписи.

В результате выполнения команды появится файл клиентского сертификата client01.crt.

Для передачи полученных в результате предыдущих операций файлов клиенту, обычно используется файл в формате PKCS#12. В этот файл упаковывается и защищается паролем вся информация необходимая клиенту для инсталяции сертификата в броузер.

# openssl pkcs12 -export -in client01.crt -inkey client01.key -certfile ca.crt -out client01.p12 -passout pass:q1w2e3

Описание аргументов:

pkcs12
Работа с файлами формата PKCS#12.
-export
Экспортирование данных в файл.
-in

client01.crt

Файл клиентского сертификата.
-inkey

client01.key

Файл закрытого ключа.
-certfile

ca.crt

Файл доверенного сертификата.
-out

client01.p12

Сохранить данные в файл client01.p12.
-passout

pass:q1w2e3

Установить пароль q1w2e3 на файл (пароль может быть любым, в том числе и пустым)

На этом процесс создания клиентского сертификата завершен. Теперь вам необходимо передать клиенту файл client01.p12 и пароль к нему любым удобным безопасным способом, а также проинструктировать его о процедуре инсталяции сертификата в броузер.

Для реализации процесса авторизации по клиентским сертификатам необходимо сконфигурировать веб-сервер для решения следующих задач:

  1. Запрет доступа к защищаемой области по протоколу HTTP.
  2. Запрос и проверка клиентских сертификатов.

Найдите в конфигурационном файле веб-сервера httpd.conf секцию , соответсвующую вашему сайту и добавьте в неё следующие директивы


SSLRequire

Описание директив:

/path/to/secure/area/
Абсолютный путь до директории защищаемой области.
SSLRequire
Запрещает доступ клиенту, если при соединении не используется протокол HTTPS (HTTP через SSL).

Найдите в конфигурационном файле веб-сервера httpd.conf секцию , соответсвующую вашему сайту и добавьте в неё следующие директивы:

SSLCACertificateFile /path/to/ca.crt

SSLVerifyClient require

Описание директив:

SSLCACertificateFile /path/to/ca.crt
Абсолютный путь до доверенного сертификатаТакже в качестве значения директивы SSLCACertificateFile может быть указан файл, содержащий несколько доверенных сертификатов (формируется путем обычной конкатенации файлов сертификатов), тогда все они будут считаться доверенными сертификатами.
SSLVerifyClient require
При наличии этой директивы веб-сервер будет запрашивать сертификат у клиента в обязательном порядке. Если клиент не предоставляет сертификат, тогда сервер отклоняет запрос. Если клиент предоставляет сертификат, то веб-сервер проверяет его срок действия и поставщика сертификата (сертификат которым он подписан), если сертификат поставщика присутсвует в файле SSLCACertificateFile, то проверка считается успешной и клиенту предоставляется доступ до защищенной области.

Для того, чтобы изменения конфигурационного файла веб-сервера вступили в силу необходимо перезапустить веб-сервер

# apachectl /restart
Это все. Проверено на Apache/2.2.6 под Fedora 7.


Записки старого сисадмина

источник статьи   


6 августа 2008  /   /   ]

Похожие статьи

  • Быстрое поднятие SSL для Apache под FreeBSD
  • Apache2 + SSL под Debian
  • Настройка SSL-шифрования между Linux и Microsoft SQL сервером на сертификат ...
  • Безопасный доступ к Web информации, SSL c нуля на Debian и FreeBSD (Apache+ ...
  • Установка StartSSL сертификатов — Postfix/Dovecot/Nginx




  • Комментировать:



    [root@linuxopen.ru ~]$ find
     ©2007 - 2011 @antropoff.ru