From: Александр Елисеенко <tusur at mail.ru>
Newsgroups: email
Date: Mon, 11 May 2004 14:31:37 +0000 (UTC)
Subject: Установка Apache с поддержкой SSL и генерация сертификатов
По материалам статей:
Stricty (http://www.opennet.ru/base/sec/ssl_freebsd.txt.html)
Alexch (http://www.opennet.ru/base/net/apache_mod_ssl.txt.html)
Недавно на OpenNET были опубликованы две статьи на тему установки
Apache с поддержкой SSL под FreeBSD.
Ключевой момент - генерация сертификатов.
И если в статье у Stricty представлена хоть и не совсем удачная
(малопонятна система именования файлов, лишние действия), но по
крайней мере самостоятельная попытка разобраться в этом вопросе,
то у alexch - чистой воды плагиат.
Не согласен с комментарием Максима Чиркова - нового в этой статье
ничего нет. Такого сорта статьи только запутывают читателей.
На самом деле не нужно заново изобретать велосипед, в стандартной
поставке Apache + mod_ssl и в openssl есть все необходимое.
Установка Apache 1.3 с поддержкой SSL делается очень просто:
cd /usr/ports/www/apache13-modssl (английская версия)
или
cd /usr/ports/russian/apache13-modssl (русская версия)
make
make certification TYPE=custom
make install
при генерации сертификатов создается нешифрованный ключ корневого
сертификата (ca.key), сертификационный запрос (ca.csr) и
самоподписанный корневой сертификат (ca.crt), нешифрованный ключ
сервера (server.key) сервера, сертификационный запрос (server.csr)
и подписанный корневым сертификатом собственно сертификат сервера
(server.crt). Будет предложено зашифровать ключи.
При ответе на вопросы в процессе генерации сертификационного запроса
сервера необходимо учесть, что commonName - это обязательно главное
доменное имя хоста. Для сертификационного запроса корневого
сертификата этот параметр не имеет значения.
Ключи можно шифровать, а можно и не шифровать. При запуске Apache с
шифрованным ключом потребуется ввести пароль, это можно сделать с
помощью внешней программы.
И самое главное - файл корневого сертификата ca.crt необходимо
передать на клиентский компьютер и ввести в хранилище сертификатов
браузера. Только в этом случае при обращении к нашему серверу по
защищенному протоколу браузер НЕ БУДЕТ выдавать предупреждение, что
сертификат выдан организацией, не входящей в состав доверенных.
Авторы вышеупомянутых статей предлагают прописывать ссылку на файл
корневого сертификата в строке
SSLCACertificateFile /usr/local/etc/apache/ssl.crt/ca.crt
конфигурационного файла httpd.conf, но это неверно.
Данная опция предназначена для организации проверки сертификатов
КЛИЕНТОВ на стороне сервера.
Сгенерировать сертификаты можно и по другому.
В состав дистрибутива openssl входят скрипты CA.sh и CA.pl
cd /usr/local/openssl/misc
создаем корневой сертификат
./CA.sh -newca
генерируем личный ключ и сертификационный запрос сервера
./CA.sh -newreq
и подписываем его своим корневым сертификатом.
./CA.sh -sign
переписываем ключ и сертификат сервера в служебный каталог Apache
cp newreq.pem /usr/local/etc/apache/sslkey/server.key
cp newcert.pem /usr/local/etc/apache/ssl.crt/server.crt
Файл корневого сертификата ./demoCA/cacert.pem необходимо
распространить по клиентским компьютерам.
Если кто желает узнать о генерации ключей и сертификатов в большей
мере, рекомендую обратиться к документации на ssl