Документация по ОС FreeBSD Суббота, 20.04.2024, 09:55
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Безопасность

Бесплатные SSL сертификаты [2009]

Защищенные (SSL) соединения обычно применяют для серверов занятых обработкой такой информации, утечка которой может стать причиной понесения материальных убытков как для пользователя, так и для владельца сервера, либо другие неудобства.

Электронные платежные системы - одни из наиболее типичных примеров использования шифрования SSL. Кроме этого, шифрованием HTTP соединений стараются защитить доступ к разного рода серверам статистики, биллинг-системам и прочим веб-приложениям.

На daemony.org не производятся банковские транзакции, либо другие операции связанные с финансовым риском, но на нем есть сервисы, которые дают возможность управлять некоторыми службами сервера через веб-интерфейс. Это в первую очередь веб-интерфейс управления DNS сервером, панель phpMyAdmin для управления базами данных MySQL, почтовый веб-интерфейс и т.д. Все это требует авторизации по логину и паролю.

Панель управления DNS изначально работала на HTTP, но позднее я перенастроил ее работу по защищенному HTTPS соединению. Ведь как известно, пароли и прочая информация по протоколу HTTP по сетям и промежуточным узлам между сервером к клиентом передается в открытом виде. Будет неприятно, если кто-либо посторонний получит логин и пароль к этой панели. Навредить глобально не получится, но внести изменения в DNS записи доменных зон, нарушив тем самым их нормальную работу, очень даже можно.

На днях дошли руки переключить на работу по HTTPS почтовый веб-интерфейс и phpMyAdmin, но здесь есть один момент. На одном порту (по-умолчанию 443) не могут работать одновременно более одного виртуалхоста с разными именами. Как выход, рассаживать все сервисы по разным портам, либо объединять под один виртуалхост и рассаживать по субкаталогам.

Я выбрал второй вариант. И сделал это потому, что задался идеей установить для этого одного хоста валидный SSL сертификат, а не самоподписанный, который можно сгенерировать самому, как было рассказано в этой публикации.

Чем валидный сертификат от одного из корневых поставщиков лучше самоподписанного? По защищенности соединения абсолютно ничем, при условии одинаковой битности ключа шифрования (512, 1024 и т.д.). Но если сервер использует сертификат от одного из известных браузеру поставщиков сертификатов, браузер клиента не задает пользователю глупых вопросов и не закатывает истерики на предмет того, что удаленному серверу нельзя доверять.

На сегодняшний день, наиболее популярные браузеры такие как Firefox, Opera, Internet Explorer, Safari, Konqueror - все поставляются с большим списком авторитетных центров сертификации и при открытии защищенного сайта в сети Интернет, проверяют кем выдан сертификат удаленного сервера. Если поставщик не найден в имеющемся списке, браузер выдает предупреждение. И так каждый раз. Но можно добавить сертификат в список доверенных и тем самым научить браузер молчать. Это не всегда удобно. Допустим, та же платежная система portmone.com смотрелась бы очень глупо, имей она самоподписанный сертификат. Здесь уже возникает вопрос имиджа.

Вот только получить валидный сертификат от авторитетных центров сертификации не так уж легко, точнее сказать, не так уже дешево. Сертификат для одного хоста на один год обойдется в среднем 120 дохлых президентов. В бюджет daemony.org эта цифра  явно не влазит. :) Какой-то очень важной коммерческой миссии на него не возложено. Поэтому отдавать 120 у.е. за сертификат смысла нет.

К слову, SSL сертификатами сейчас приторговывают многие известные мне хостинг- и интернет-провайдеры. Подавляющая их часть - это конечно же реселлеры, заказывающие сертификаты для своих клиентов в авторитетных центрах сертификации. Но, как выяснилось благодаря Google, в Сети можно отыскать места, где SSL сертификаты "раздают” бесплатно!

Правда такие раздачи придуманы лишь с целью привлечь клиентов, предоставив возможность "попробовать” в течении ограниченного срока бесплатный и заставить заплатить деньги за платный сертификат. По истечении срока действия сертификат от авторитетного поставщика становится ничем не лучше самоподписанного.

Я попытался собрать список мест в Сети, где можно заказать бесплатный SSL сертификат на срок от одного до трех месяцев. Мест этих не так уж и много.

  • freessl.su - срок от 30 до 90 дней. Поставщик COMODO.
  • instantssl.com - как и предыдущий. Срок 90 дней. Поставщик COMODO.
  • ipsca.com - срок 90 дней. Поставщик IpsCA.
  • trustico.eu - срок 30 дней. Поставщик GeoTrust.
  • rapidssl.com - срок 30 дней. Поставщик - они же - RapidSSL.
  • verisign.com - cрок 14 дней. Сертификаты не авторизованные (не стоило вообще упоминать).
  • globalsign.com - срок 30 и 45 дней. Поставщики - они же - GlobalSign Inc.
  • ssl.com - срок 30 дней. Поставщик COMODO.

Кроме этого существуют:

  • startssl.com - выдает сертификаты на 1 год от StartCom, но об этом поставщике браузеры ничего не знают, хотя на их сайте сказано что, "Many software vendors like Mozilla (Firefox) and Apple (Safari) provide built-in support of the StartCom Certification Authority"
  • cacert.org - аналогично предыдущему. Дают сертификаты на год, но браузеры ничего не знают об этом поставщике и ругаются так же как и на самоподписанные сертификаты.

Я заказал SSL сертификат от COMODO CA Limited через freessl.su. Все более-менее важные сервисы на daemony.org перенес под субдомен secure.daemony.org. Срок действия сертификата закончится 5 августа этого года.

КАК ПОЛУЧИТЬ SSL СЕРТИФИКАТ

Для получения сертификата, который Вы потом сможете использовать в работе Apache + mod_ssl сервера, Вам необходимо в первую очередь сгенерировать так называемый CSR файл (сertificate signing request - запрос на получение сертификата). Этот файл будет содержать в себе информацию о владельце сертификата. Во FreeBSD сгенерировать CSR можно средствами пакета openssl. Естественно, openssl должен быть установлен в системе.

Но прежде, чем Вы будете создавать CSR запрос, Вам понадобится сгенерировать RSA-ключ Вашего сервера, которым этот запрос будет подписан. Учтите, созданный однажды RSA-ключ, которым будет подписан CSR запрос, который в свою очередь в дальнейшем будет использован для получения сертификата, является уникальным. Утеряв его, Вы конечно же сможете сгенерировать новый, но Ваш сертификат с новым ключем уже будет недействителен. Поэтому сохраните созданный RSA-ключ в надежном месте (сделайте его бекапную копию).

Ключ сервера можно создать как с парольной защитой так и без нее. Пароль ключа придает ему большую защиту, шифруя его. Украв у Вас этот ключ, никто ничего не сможет им подписать не зная пароля. С этим же ключом будет работать веб-сервер. Поэтому, если ключ защищен паролем, в настройках SSL виртуалхоста понадобится отдельной директивой указать серверу путь к файлу пароля, который дает доступ к ключу. Но в моем случае я не буду использовать пароль.

Генерирование RSA-ключа сервера Apache без шифрования

# openssl genrsa -out secure.daemony.org.key 1024
Generating RSA private key, 1024 bit long modulus
..++++++
........................................................................++++++
e is 65537 (0x10001)

где: 1024 - стойкость шифрования, а secure.daemony.org.key - имя файла ключа на выходе. Имя файла может быть любым. Но удобней использовать имя хоста, которому принадлежит этот ключ.

Сам ключ представляет собой текстовый файл и выглядит обычно так:

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDHJaQYB4QwYbq1Yf177CBSPVSyl+oMPvc7QKzimldewAosMkcR
BQo/02IbIrZsHw2YHL5+EuxZr0RZLvbKCbOIWKa3FWQh00XBDEQCGKQSVAqFyi2J
Bb47nJ5nGfWfetRf33hYlRqN2CluH7uU02qV0m8IvgVduI9ce3Ddp7FblQIDAQAB
R1a/fwOWIhkKGoLAlKPxnZWgAftXMOhPkl8o4C+V2Nv/LNDW8nk6qF1/fZ9JLdld
m7vBJRooJGNzrp9z59gtAkEAl7JjjuqX3ae+Bg4/DFzJh/qyLBwwMHrlnicLxXUL
3w8f+a4t/R4vmh5Pqlep5IorWWfwhNIO2MODfzcN8XeApA==
-----END RSA PRIVATE KEY-----

Важную роль играют первая и последняя строчки файла. До и после фраз "BEGIN RSA PRIVATE KEY” и "END RSA PRIVATE KEY” должно быть ровно по пять тире. Не исправляйте никогда этот файл вручную в текстовом редакторе.

Положите полученный ключ в папку, доступную веб-серверу, например, в /usr/local/etc/apache/ssl Перейдите в эту папку и сгенерируйте CSR запрос.

Создание CSR (сertificate signing request)

# cd /usr/local/etc/apache/ssl
# openssl req -new -key secure.daemony.org.key -out secure.daemony.org.csr

где: secure.daemony.org.key - RSA-ключ сервера; secure.daemony.org.csr - имя файла, в котором будет сгенерирован CSR запрос в PEM формате.

Программа начнет задавать Вам вопросы, на которые следует указывать данные о владельце будущего ключа. Естественно, вписать сюда можно что угодно (кроме пункта Common Name - оно должно точно совпадать с именем сайта, который будет использовать будущий сертификат). Но все таки стоит придерживаться правил и вписывать реальные данные.

# openssl req -new -key secure.daemony.org.key -out secure.daemony.org.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:UA - Двубуквенное обозначение страны. UA - это Украина. Для России - RU.
State or Province Name (full name) [Some-State]:Dnepropetrovsk Region - Название штата, области, округа...
Locality Name (eg, city) []:Dnepropetrovsk - Название города, в котором географически находится сервер.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Daemony.org - Название организации.
Organizational Unit Name (eg, section) []:Apache Web Server - Название подразделения организации.
Common Name (eg, YOUR name) []:secure.daemony.org - СЮДА СЛЕДУЕТ ВПИСАТЬ ТОЧНОЕ ИМЯ ХОСТА!
Email Address []:rооt@daemоny.оrg - E-mail адрес контактного лица.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Дополнительные (’extra’) атрибуты запроса вводить не обязательно и не нужно. Просто нажать Enter. В текущей папке появится файл CSR запроса. Выглядит он обычно так:

-----BEGIN CERTIFICATE REQUEST-----
MIIB5DCCAU0CAQAwgaMxCzAJBgNVBAYTAlVBMQswCQYDVQQIEwJEUDEXMBUGA1UE
BxMORG5lcHJvcGV0cm92c2sxFDASBgNVBAoTC0RhZW1vbnkub3JnMRowGAYDVQQL
ExFBcGF5aGUgV2ViIFNlcnZlcjEbMBkG21UEAxMSc2VjdXJlLmRhZW1vbnkub3Jn
MR8wHQYJKoZIhvcNAQkBFhByb290QGRhZW1vbnkub3JnMIGfMA0GCSqGSIb3DQEB
AQUAA4GNADCBiQKBgQDKanM73zDC7YKuulG+WdsicutOQqPltQrKaG+8ifq5KhX8
QEK6cek7vMHQ195qwIXXtTUqZYRZM//Ogc+AytJ7b1csR2yiqQrh3cAcn3h1+LtX
Sy+1ty0OeUqWBRYhIgfNeuY253nPJRhicKOLTDPbmURq9SlIPXjkkirEg90Q5QID
AQABoAAwDQYJKoZIhvcNAQEFBQADgYEAGdVMaWva0eobg5Q/q8icTiE3c1WkD/B8
lp5NBfqRZ/9xzvriA2R2nmjilYfMPvP5sGi9usdul9v7iftMz/FikAuDiIwZMRFv
OIGyedJ6jJG08YKCt+YpCXXd8v2EvuyKL9NMy3C2+RAA3ZJ1YmPPYBxF07+UX0q4
SmVodjGDfpo=
-----END CERTIFICATE REQUEST-----

Имея CSR запрос, проходим по этому адресу, (либо по другим, приведенным выше), и отправляем его через форму на сайте, указывая дополнительно прочую сопутствующую информацию. Ключ пришлют Вам по e-mail. Полученный ключ (файл с расширением .crt) положите в папочку /usr/local/etc/apache/ssl а в конфигурационный файл сервера Apache для Вашего SSL хоста добавьте такие директивы:

<IfDefine SSL>

 SSLEngine On
 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 SSLCertificateFile /usr/local/etc/apache/ssl/secure.daemony.org.crt
 SSLCertificateKeyFile /usr/local/etc/apache/ssl/secure.daemony.org.key

 <Files ~ "\.(cgi|shtml|phtml|php?)$">
 SSLOptions +StdEnvVars
 </Files>

 SSLSessionCacheTimeout 300.
 SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

</IfDefine>

После внесения изменений в конфигурацию Apache, не забываем его остановить и запустить с использованием SSL.

# apachectl stop
/usr/local/sbin/apachectl stop: httpd stopped
# apachectl startssl
/usr/local/sbin/apachectl startssl: httpd started

Именно так. Потому что иначе, если Вы ранее не использовали SSL на Вашем веб-сервере, mod_ssl работать не будет.

Подробнее об использовании Apache + mod_ssl можно прочитать в этой публикации. Более подробно и доходчиво про SSL (англ. Secure Sockets Layer - уровень защищённых сокетов) можно почитать в Википедии.



Источник: http://live.daemony.org/freebsd/free-ssl-certificates.html
Категория: Безопасность | Добавил: oleg (08.01.2010) | Автор: Daemony’s Live Blog
Просмотров: 1347 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 wridayMyday  
0
нужно проверить :)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024