Действительно безопасные соединения или персональный CA
SSL — Secure Sockets Layer — протокол, позволяющий создавать безопасное соединение поверх обычного TCP соединения. Протокол позволяет решить две проблемы — предотвращение прослушивания потока, и проверку сторон соединения, что они являются теми, за кого себя выдают.
Рассмотрим на простом примере — веб-сервер в локальной сети, предоставляющий доступ до статистики. Как это решается обычно? Создаётся самоподписанный сертификат, выданный на имя сервера, подписанный самим сервером. Каждый раз при заходе на сайт, пользователь нажимает «Да, я согласен», даже не задумываясь, попадает на страницу статистики. Вводит логин, пароль, и радуется жизни.
Вот только где он ввел пароль?..
А что нужно для того, чтобы соединение было действительно безопасным? Для этого необходимо и достаточно, чтобы сертификат сервера был подписан не «абы кем», а центром сертификации, который есть у пользователя, и доверяем им. Тогда браузер проверит подпись, увидит, что сертификат выдан на правильное имя сервера, подписан центром сертификации, которому доверяет — и пропустит молча, не выдавая никаких сообщений о проблемах безопасност. Продвинутые браузеры, еще и будут вместо красного «Небезопасное соединение» показывать красивое зелёное «Всё безопасно».
При работе с критичными сервисами, разумеется, сертификат покупается за сотни евро в год у продавцов подписей, которые берут на себя ответственность, и не продадут сертификат на ваш сайт левым лицам.
Что же делать, если нужно обеспечить безопасность в локальной сети, например, или для маленького, но гордого, «почти free хостинга»? Выход прост: создать свой собственный центр авторизации (CA).
Применение своего CA позволяет решать сразу несколько моментов: с помощью своего CA легко подписывать сертификаты не только для web сервера, но и ftp, pop3, imap, smtp, xmpp и для любых других сервисов, умеющих использовать SSL. Так же, при необходимости, используя свой CA можно создавать авторизацию с помощью пользовательских сертифкатов, впрочем, об этом — в отдельной статье.
# a2ensite https_mylan
# service apache2 reload
Всё! После этого можно зайти на mylan/ и радоваться зелёному значку безопасного соединения.
Главное, не забывайте устанавливать корневой сертификат на компьютер и во все браузеры.
Рассмотрим на простом примере — веб-сервер в локальной сети, предоставляющий доступ до статистики. Как это решается обычно? Создаётся самоподписанный сертификат, выданный на имя сервера, подписанный самим сервером. Каждый раз при заходе на сайт, пользователь нажимает «Да, я согласен», даже не задумываясь, попадает на страницу статистики. Вводит логин, пароль, и радуется жизни.
Вот только где он ввел пароль?..
А что нужно для того, чтобы соединение было действительно безопасным? Для этого необходимо и достаточно, чтобы сертификат сервера был подписан не «абы кем», а центром сертификации, который есть у пользователя, и доверяем им. Тогда браузер проверит подпись, увидит, что сертификат выдан на правильное имя сервера, подписан центром сертификации, которому доверяет — и пропустит молча, не выдавая никаких сообщений о проблемах безопасност. Продвинутые браузеры, еще и будут вместо красного «Небезопасное соединение» показывать красивое зелёное «Всё безопасно».
При работе с критичными сервисами, разумеется, сертификат покупается за сотни евро в год у продавцов подписей, которые берут на себя ответственность, и не продадут сертификат на ваш сайт левым лицам.
Что же делать, если нужно обеспечить безопасность в локальной сети, например, или для маленького, но гордого, «почти free хостинга»? Выход прост: создать свой собственный центр авторизации (CA).
Применение своего CA позволяет решать сразу несколько моментов: с помощью своего CA легко подписывать сертификаты не только для web сервера, но и ftp, pop3, imap, smtp, xmpp и для любых других сервисов, умеющих использовать SSL. Так же, при необходимости, используя свой CA можно создавать авторизацию с помощью пользовательских сертифкатов, впрочем, об этом — в отдельной статье.
Создание своего CA
- Устанавливаем на сервере openssl (и sharutils для uuencode).
- Редактируем конфигурацию, использующуюся по умолчанию в файле /etc/ssl/openssl.cnf
- Придумаем название для нашего CA. Например, банальное MyCA. В дальнейшем, разумеется, заменяете значения по своему вкусу.
В разделе [ ca ] исправляем CA_default на придуманное нами:
default_ca = <b>MyCA</b>
И исправляем название следующего раздела [ CA_default ] на придуманное нами. правим внутри значения, которые нас интересуют:
[ MyCA ] dir = /var/spool/<b>MyCA</b> unique_subject = no # Это необходимо для перевыдачи сертификатов по истечении старых default_days = 365 # Для выдачи сертификатов для простых случаев, можно поставить 3650 и забыть про ежегодную перевыдачу сертификатов default_md = sha1 # Убедитесь, что стоит не хуже sha1 :)
Для выдачи сертификатов своим сервисам без необходимости каждый раз отвечать на постоянные вопросы, найдите раздел [ req_distinguished_name ] и заполните в нем необходимые параметры:
[ req_distinguished_name ] countryName_default = <b>RU</b> stateOrProvinceName_default = <b>Moscow</b> localityName_default = <b>Moscow</b> 0.organizationName_default = <b>My LAN</b> organizationalUnitName_default = <b>LAN Secure Services</b> emailAddress_default = <b>support@mylan</b>
Теперь, для того, чтобы выданные сертификаты действовали не только на имя сервера, но так же на его IP, на *.домен, добавим ниже в разделе:
[ usr_cert ] nsComment = "<b>Certificate for My LAN services</b>" subjectAltName=DNS:*.<b>mylan</b>,DNS:<b>mylan</b>,DNS:<b>192.168.1.250</b> # IP и домен подставить свои
# a2ensite https_mylan
# service apache2 reload
Всё! После этого можно зайти на mylan/ и радоваться зелёному значку безопасного соединения.
Главное, не забывайте устанавливать корневой сертификат на компьютер и во все браузеры.
Ссылки на полезные статьи
- isp-control.net/documentation/howto/security/create_your_own_ssl_ca_and_secure_multiple_services — изначальная статья, для которой писался makecert.
www.openssl.org/ — сайт библиотеки openssl
www.opennet.ru/base/sec/openssl.txt.html — немного полезной теории и практики использования openssl
www.google.ru/search?q=own+ca — еще статьи на ту же тему
0 комментариев