Установка 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
необходимо передать на клиентский компьютер и ввести в хранилище
сертификатов браузера. Только в этом случае при обращении к нашему
серверу по защищенному протоколу браузер НЕ БУДЕТ выдавать
предупреждение, что сертификат выдан организацией, не входящей в состав
доверенных.
Авторы вышеупомянутых статей предлагают прописывать
ссылку на файл корневого сертификата в строке конфигурационного файла httpd.conf, но это неверно.
SSLCACertificateFile
/usr/local/etc/apache/ssl.crt/ca.crt
Данная опция предназначена для организации проверки
сертификатов КЛИЕНТОВ на стороне сервера.
Сгенерировать сертификаты можно и по другому.
В состав дистрибутива 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.
lynx
/usr/local/share/doc/apache/manual/mod/mod_ssl/ssl_faq.html