Как установить SSL сертификат: пошаговая инструкция

Вступление

Если у вас безопасный веб-сервер, пользователи, волнующиеся за безопасность своих данных, могут быть уверены, что запросы зашифрованы, поэтому их данные в безопасности. Лучшим путем для этого является использование Apache 2, лидирующего веб-сервера под Linux и Secure Sockets Layer, протокол безопасной передачи данных. Transport Layer Security (TLS) является развитием SSL, но они работают практически одинаково. Я буду ссылаться только на SSL.

SSL - протокол для безопасной передачи зашифрованных данных между веб-браузером и веб-сервером. В большинстве случаев, аутентификацию проходит сервер, что позволяет клиенту быть уверенным в том, что сервер является требуемым ему, а не наоборот. Как бы то ни было, когда соединение устанавливается, обе стороны находятся в безопасности, так как только клиент и сервер имеют доступ к ключу. Это работает в течении многих запросов, сервер не интересует, кем является клиент так долго, сколько он остается тем же клиентом на протяжении запроса. Если вас волнует аутентификация клиента, есть возможность использовать клиентские SSL сертификаты (или htaccess, Kerberos или другие, близкие к ним методы), но это не будет рассматриваться в этой статье.

Будучи на стороне клиента, вас волнует, тому ли человеку (серверу) вы посылаете какие-либо личные данные, которые хотите зашифровать. Поэтому сервер, а не клиент, аутентифицируется. Вас также беспокоит участие третей стороны в доступе к вашим данным в том виде, каком вы их посылаете. SSL предоставляет оба этих вида безопасности.

Протокол SSL работает следующим образом:
1. Клиент подключается к веб-серверу и дает список доступных кодов.
2. Сервер берет наиболее устойчивый код, который поддерживает и он, и клиент, и посылает сертификат со своим именем и ключ кодирования, подписанный доверенным Удостоверяющим Центром (Certificate Authority, далее - CA), таким как Verisign.
3. Клиент проверяет сертификат с помощью CA. На практике, хранят набор CA локально, поэтому это может быть сделано без контакта в реальном времени с CA, и поэтому более быстро.
4. Клиент посылает назад случайное число, зашифрованное с помощью публичного ключа сервера. Только клиент знает это число, и только сервер может его расшифровать (используя личный ключ); вот где реализуется безопасность от участия третей стороны.
5. Сервер и клиент используют случайное число для генерирования содержимого ключа, который используется на протяжении передачи данных.

Мы хотим сделать это на стороне клиента настолько прозрачным, насколько это возможно, чтобы сделать передачу данных настолько легкой, насколько возможно.

Настройка Apache для работы с SSL проста, но есть несколько необходимых шагов. Эта статья рассказывает, как получить сертификат, подписанный CA и как скомпилировать и настроить Apache для работы с SSL. Я использую Apache 2 с mod_ssl . ApacheSSL (реализация Apache с возможностями SSL) также доступен, но сейчас он уже устарел; mod_ssl намного лучше.

Создание сертификата.

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

Теоретически, преимуществом использования пароля являтся повышение защиты. Хотя, на практике пароли не дает такой большой защиты. Если кто-то сможет прочитать или скопировать приватный ключ, значит, у него уже есть доступ к системе и возможность получить пароль, например, используя такую программу, как кейлоггер. Пароль защитит от скрипт-кидди, но не от серьезного взломщика. Возможно, для большинства людей нет смысла его использовать.

Для тестовых целей, или для небольшой локальной сети, вы можете создать сертификат, подписанный вами. Вы можете сделать это, выполнив команду:
openssl req -new -x509 -days 365 -sha1 -newkey rsa:1024 \ -nodes -keyout server.key -out server.crt \ -subj "/O=Company/OU=Department/CN=www.example.com"
Давайте рассмотрим опции более подробно:
- -x509 означает, что сертификат обязателен, правильнее, чем просто запрос сертификата (смотри ниже)
- -days 365 устанавливает время истечения сертификата, равное году. Вы можете увеличить этот срок. Запомните дату истечения срока, чтобы обновить её при необходимости.
- -sha1 указывает, что будет использован SHA1 для шифрования.
- rsa:1024 делает ключ 1024 битным RSA.
- -nodes указывает отсутствие пароля.
- -keyout и -out указывают, где хранить сертификат и ключ. Ключ должен быть доступен для чтения только для root; сертификат может быть доступен для чтения для world, но должен быть доступным для чтения пользователю, который запускает Apache.
- -subj устанавливает имя компании, имя отделения компании и адрес веб-сайта. Если вы это пропустите, вас попросят это сделать. CN должен совпадать с адресом сайта, иначе сертификат не будет соответствовать, и пользователи будут получать предупреждение при подключении. Убедитесь, что вы не запрашиваете пароль.

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

Не смотря на это, безусловно, лучше использовать сертификат, подписанный доверенным Удостоверяющим Центром, таким как Verisign (который имеет наибольший охват рынка), или меньшей организацией. Большинство браузеров уже имеют набор предустановленных сертификатов, заверенных CA, которые верифицируют сертификат вашего веб-сервера при подключении клиента. Это уменьшает количество трудностей для конечного пользователя и удостоверяет законность вашего сайта.

Чтобы получить сертификат, подписанный CA, прежде всего вы должны создать криптографическую пару и запрос сертификата:
openssl req -new -sha1 -newkey rsa:1024 -nodes \ -keyout server.key -out www.example.com.csr \ -subj "/O=Company/OU=Department/CN=www.example.com"
Этот пример работает так же, как и предыдущий, но на этот раз мы не используем опцию -x509. Выполнение этой команды приведет к генерации ключа и запроса сертификата, но не самого сертификата. Если вы ввели CN и так далее, вы не должны вводить адрес e-mail или пароль.

Ключ сервера (файл server.key, который, опять же, должен быть доступен для чтения только для root) остается на вашем веб-сервере; запрос (файл www.example.com.csr) отправляется в CA. Вы можете назвать файл запроса так, как вам вздумается, но назвав его по своему доменному имени, вы упростите задачу для CA.

Следующей стадией будет послать этот файл www.example.com.csr в CA, с вашей оплатой. Они должны вернуть его достаточно быстро, если вы предоставили всю требуемую информацию в вашем запросе. Выбранный вами CA объяснит их действия на своем сайте. Вам может понадобиться поменять формат файла на PEM, но, в случае Verisign, этого делать не придется.

Когда вы получите файл назад в PEM формате, переименуйте его в server.crt (это не является строгой необходимостью, но соответствует условиям Apache) и проверьте его:
openssl verify -CAfile /path/to/trusted_ca.crt \ -purpose sslserver server.crt
Затем проверьте, что результат выполнения этих двух команд одинаков, т.е., что сертификат соответствует приватному ключу:
openssl x509 -noout -modulus -in server.pem | openssl sha1 openssl rsa -noout -modulus -in server.key | openssl sha1
Теперь установите ваш ключ (сгенерированный выше как server.key) и сертификат (server.crt) в /etc/apache2/ssl или предпочитаемый вами каталог настроек, если он другой. Как указано выше, очень важно убедиться, что server.key доступен для чтения только для root, в то время как сертификат сервера может быть доступен для чтения для world, но принадлежать и быть доступным для записи только для root.

Компиляция Apache с SSL.

Итак, ваш сертификат сгенерирован. Теперь вам надо настроить свой сервер для его использования.

Для подавляющего большинства людей, лучшим способом установить и управлять Apache2 - модули, полученные через менеджер пакетов вашего дистрибутива. Apache2 из Debian идет вместе с модулем SSL, но он не включен по умолчанию. Для его включения вы должны выполнить команду: a2enmod ssl и перезапустить веб-сервер.

Чтобы сделать это, добавьте строчку
Include /etc/apache2/mod_ssl.conf
в ваш /etc/apache2/apache2.conf (этот файл может также называться httpd.conf). Вы должны исправить её, обозначив соответствующее расположение файла mod_ssl.conf. Затем перезапустите веб-сервер.

Если вы хотите скомпилировать Apache2 из исходных кодов, в зависимости от того, какие установки вы до этого использовали, вы можете уже иметь или не иметь поддержку SSL. Проверьте это командой apache2 -l. Если перекомпиляция понадобится, запустите./configure со всеми опциями, которые вы использовали до этого, добавив к ним --enable-ssl и --enable-setenvif (последняя нужна для совместимости с капризами Internet Explorer). Затем установите его как обычно, с помощью make;make install и проверьте правильность прав доступа.

Настройка Apache с SSL.

Следующим шагом будет настройка Apache2. Следующие инструкции приведут к запуску сервера как безопасного (порт 443) и как обычного веб-сервера (порт 80). Прежде всего, вам надо настроить сервер на принятие запросов на оба порта. Или отредактируйте /etc/apache2/ports.conf (в Debian, это входит в apache2.conf), или отредактируйте /etc/apache2/apache2.conf, включив строки:
Listen 80 Listen 443
Затем отредактируйте /etc/apache2/sites-enabled/yoursite для использования настроек SSL. Разделение настроек обычного и безопасного сервера с помощью VirtualHost - простейший способ из соображений условий эксплуатации. Любые настройки вне секций VirtualHost (например, установка ServerAdmin) будут применяться для обоих (и любых других) VirtualHost. Добавьте следующий текст в файл конфигурации:
# ================================================= # SSL/TLS settings # ================================================= NameVirtualHost *:443 DocumentRoot "/local/www/ssl_html" SSLEngine on SSLOptions +StrictRequire SSLRequireSSL SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLRandomSeed startup file:/dev/urandom 1024 SSLRandomSeed connect file:/dev/urandom 1024 SSLSessionCache shm:/usr/local/apache2/logs/ssl_cache_shm SSLSessionCacheTimeout 600 SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key SSLVerifyClient none SSLProxyEngine off AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
Несколько замечаний об этой конфигурации:
- SSLEngine должен быть включен, обозначая, что сервер использует SSL.
- DocumentRoot устанавливает корневой каталог виртуального хоста. Это значит, что вы можете отделять безопасное содержимое от обычного.
- SSLRequireSSL запрашивает использование SSL (на этом виртуальном сервере), то есть, пользователь не может подключиться к этому виртуальному хосту с помощью обычного HTTP-запроса. Вот зачем мы разделили безопасное и обычное содержимое.
- SSLProtocol отключает все протоколы, отличные от TLS v1.0 и SSL v3.0. Для современных браузеров все будет работать хорошо.
- SSLCipherSuite устанавливает использование только HIGH и MEDIUM шифров. SHA1 считается более безопасным, чем MD5, поэтому выбран он.
- SSLCertificateFile и SSLCertificateKeyFile указывают расположение файлов сертификата и ключа.
- SSLVerifyClient должна быть установлена как "none", если не используется аутентификация примера.

Чтобы запускать обычный сервер на 80 порту, добавьте следующий текст в конфигурационный файл:
NameVirtualHost: *.80 DocumentRoot "/local/www/html"
После сохранения отредактированного конфигурационного файла, перезапустите сервер. Если вы использовали пароль при генерации сертификата, вам понадобится ввести его при запросе.

Тестирование.

Создайте базовую страницу index.html в корневой директории вашего сервера, если у вас ещё нет содержимого там.

Затем направьте свой браузер на https://yoursite.com. Вы должны увидеть открытие SSL-соединения и загрузку страницы. Если вы используете сертификат, подписанный вами, ваш браузер даст предупреждение о том, что подлинность сервера не может быть проверена. Вы можете выбрать просмотр сертификата и принять его. Если вы используете внешний сертификат, все должно пройти без проблем.

Убедитесь, что не можете получить доступ к безопасному содержимому, используя http://. Если вы попробуете, вы должны получить сообщение об ошибке.

Устранение проблем.

Если это работает не так, как ожидалось, прежде всего, проверьте, что ваш сервер вообще запущен с помощью команды ps -a | grep apache. Если она не вернет результата, попробуйте перезапустить сервер и проверьте сообщения об ошибке в консоли.

Также проверьте, что права доступа к файлам сертификата и ключа установлены правильно (см. выше), также, как и права к тестовому HTML-файлу и директории, в которой он находится.

Затем, проверьте логи. Вы должны проверить как логи сервера, так и логи SSL, которые вы настроили в конфигурационном файле выше. Если вы не нашли там ничего полезного, попробуйте поменять значение LogLevel в файле конфигурации Apache2 на "debug", перезапустите Apache2 и протестируйте снова. Это должно дать больше данных в логах.

Если вы запускаете веб-сервер на 80 порту, попробуйте запросить страницу с помощью http://, вместо https://, чтобы понять, заключается ли проблема в веб-сервере или в SSL-соединении. Учтите, что в приведенных выше установках, корневые каталоги веб-сервера разные для http:// и https://, так что вы не можете (или не должны!) получить доступ к тому же содержимому. Если ваша тестовая страница в корневом каталоге http:// работает, в то время, как тестовая страница в корневом каталоге https:// не работает, это поможет вам более точно указать на проблему.

Если проблема в SSL соединении, удобным инструментом будет s_client, который является диагностической утилитой для решения проблем в TLS/SSL-соединениях. Обычное его использование: /usr/bin/openssl s_client -connect localhost:443. Также существует множество других опций, которые вы можете узнать из документации. Если вы получили сообщения об ошибках, это должно вам помочь в определении проблемы.

Заключение.

Поздравляю! Теперь у вас есть рабочий безопасный сервер, с сертификатом, автоматически проверяемым большинством современных браузеров.

С каждым днем необходимость в защищенном соединения стает все острее. Во-первых, это более безопасная работа с сайтом, потому что все данные передаются в шифрованном виде, во-вторых, это зелёный замочек рядом с адресом сайта, что вызывает некое доверие к порталу, в-третьих, по заявлению представителей Google, сайты работающие на https имеют преимущество в поисковой выдаче.

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

Получения и установка SSL-сертификата Let’s Encrypt

1. Для получения сертификата воспользуемся сайтом https://www.sslforfree.com/ . Переходим по ссылке и прямо на главной странице видим основное поле. Вбиваем туда имя нашего домена и нажимаем кнопку “Create Free SSL Certificate” .

2. Далее сайт нам предлагают на выбор несколько вариантом подтверждения домена. Нажимаем “Manual Verification” , после “Retry Manual Verification” . В итоге, мы получаем два файла которые необходимо залить на сайт в папку /.well-known/acme-challenge . Выполняем данные действия и нажимаем “Download SSL Certificate” .

3. Наш SSL-сертификат готов, срок его действия 90 дней , после необходимо повторить процедуру. Остается только установить его на сайт.

4. Процесс установки сертификата на каждом хостинге может немного отличаться, если у вас установлена какая-либо панель управления (ISP Manager, cPanel и т.д.), то сделать через нее не составит большого труда. Для этого переходим в раздел SSL сертификаты” и выполняем установку по инструкции. В случае отсутствия панели установка происходит через конфиги web-сервера, подробнее о процессе установки SSL-сертификата на Apache в CentOS.

5. Настройка редиректа с http на https . Сделать это можно несколькими способами, через панель хостинга, через файл.htaccess, через конфигурацию вашего web-сервера или через PHP (любой другой язык, на котором сделан сайт).

Все способы рассматривать не будем, это материал для другой статьи. Самый распространённый пример, редирект с http на https через.htaccess . Добавляем нижеуказанный код в начало файла.htaccess:

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

< IfModule mod_rewrite . c >

RewriteEngine On

RewriteCond % { HTTPS } off

RewriteRule ^ (. * ) $ https : //%{HTTP_HOST}%{REQUEST_URI}

< / IfModule >

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

Итак, вы приобрели SSL-сертификат для вашего домена. В процессе заказа вы должны были выбрать авторизационный email, расположенный на вашем домене: admin, administrator, hostmaster, postmaster, webmaster. На выбранный вами авторизационный email придет письмо содержащее ссылку, пройдя по которой, вы подтвердите ваши административные права домена. После этого на ваш контактный электронный почтовый ящик аккаунта поступит несколько писем.

Имеются следующие файлы:

Приватный ключ (для удобства сохраните его в виде простого текстового файла с именем ваш_домен.key)

Файл сертификата для вашего домена, ваш_домен.crt

Два файла цепочки сертификатов PositiveSSLCA2.crt и AddTrustExternalCARoot.crt

В этом руководстве пошагово описаны способы привязки SSL-сертификата к сайту для организации безопасного шифрованного соединения между веб-сервером и браузером клиента.

Обратите внимание, если письмо, содержащее приватный ключ, к вам не поступило, то в первую очередь проверьте, пожалуйста, каталог "Спам" в вашем почтовом ящике. В том случае, если в указанном каталоге письмо не обнаружено, напишите, пожалуйста, письмо с контактного электронного почтового ящика аккаунта на

Установка сертификата средствами ISPmanager


1. Войдите в ISPmanager под учетной записью "root". (Если вы заказали VPS сервер на тарифе с администрированием нашими специалистами, то данный шаг необходимо пропустить)

Войдите в меню "Учетные записи" → "Пользователи", выберите пользователя-владельца сайта, к которому требуется привязать SSL-сертификат, и нажмите кнопку "Изменить".


В появившемся установите галочку "Может использовать SSL", если она еще не установлена.


Сохраните изменения кнопкой "Ok".

Дальнейшие действия мы будем выполнять от имени созданного пользователя-владельца сайтов. Снова выберите вашего пользователя-владельца сайта и нажмите кнопку "Войти" в правом верхнем углу, ISPmanager автоматически понизит ваши привилегии до его уровня.


2. Перейдите в раздел "WWW" → "WWW-домены". В списке отображаются все добавленные в конфигурационные файлы веб-сервера домены, в колонке "Параметры" иконками отображается наличие или отсутствие тех или иных модулей веб-сервера, которые участвуют в обработке запросов к сайту. Необходимо подключить модуль для работы с SSL для сайта, для этого выберите домен и нажмите кнопку "Изменить" сверху.


Откроется новая вкладка, в которой нужно установить галочку "Защищённое соединение (SSL)" и "Перенаправлять HTTP-запросы в HTTPS" и сохранить изменения кнопкой "Ok". Обратите внимание, желательно чтобы этот домен был единственным доменом с SSL на этом IP-адресе.


3. Теперь перейдем в раздел "WWW" → "SSL сертификаты", здесь показаны все имеющиеся на сервере сертификаты безопасности, отсюда мы добавим наш. Обратите внимание на наличие самоподписанного сертификата для вашего домена - он был сгенерирован ISPmanager-ом автоматически на предыдущем шаге, в момент когда вы установили галочку "SSL" в настройках WWW-домена. Этот сертификат использоваться не будет, мы добавим наш, сделать это можно кнопкой "Создать" сверху.


На первом шаге выберете тип сертификата "существующий".


На втором шаге вам необходимо будет ввести имя сертификата, сам сертификат, приватный ключ сертификата и подтверждающую цепочку. Откройте в "Блокноте" все имеющиеся у вас файлы: приватный ключ, который мы сохранили в файл ваш_домен.key, файл сертификата ваш_домен.crt и другие два. В форму ввода "SSL-сертификат" скопируйте содержимое файла ваш_домен.crt; в форму "Ключ SSL-сертификата" скопируйте текст из файла ваш_домен.key. В форму "Цепочка SSL-сертификатов" последовательно скопируйте содержимое файлов PositiveSSLCA2.crt и AddTrustExternalCARoot.crt, именно в этом порядке. Нажмите кнопку "Завершить" для сохранения введенных данных.


В открывшемся окне в поле "SSL-сертификат" выберете добавленный вами в предыдущем шаге сертификат и подтвердите изменения кнопкой "Ok".


5. Перейдите на ваш сайт, для работы по шифрованному соединению в адресной строке браузера впишите адрес наподобие "https://ваш_домен.ru/". Аббревиатура "https" означает работу по шифрованному протоколу HTTP, что нам и требуется. Если все сделано правильно, браузер не будет выдавать никаких предупреждений или сообщений о потенциальных угрозах, а сразу отобразит сайт. В адресной строке при этом тем или иным способом будет обозначен факт того, что передаваемые данные шифруются и сертификат подтвержден.


Настройка закончена. Следует, однако, иметь в виду, что при каких-либо изменениях в ПО веб-сервера (его переконфигурирование, смена IP-адреса домена, установка nginx перед Apache например) эта схема работы может нарушиться. В этом случае возможно придется внести соответствующие коррективы в конфигурационные файлы веб-сервера вручную.
Если у вас возникнут какие-либо вопросы при добавлении сертификата к вашему сайту - техническая поддержка всегда будет рада помочь вам, напишите пожалуйста письмо на адрес support@сайт с контактного e-mail вашего сервера.

Установка сертификата утилитами из консоли: CentOS, Apache 2

Если на вашем сервере установлен и используется проксирующий веб-сервер nginx, вам следует организовать работу с сертификатами с его помощью. Инструкция по настройке nginx ниже, отдельным пунктом.

1. Поместите все 4 файла (приватный ключ, сохраненный в файле ваш_домен.key , и файлы сертификатов ваш_домен.crt , PositiveSSLCA2.crt и AddTrustExternalCARoot.crt


# cat /var/www/httpd-cert/PositiveSSLCA2.crt /var/www/httpd-cert/AddTrustExternalCARoot.crt > -bundle

# openssl verify /var/www/httpd-cert/ваш_домен.crt-bundle


5. В конфигурационном файле Apache 2 (наиболее вероятно - /etc/httpd/conf/httpd.conf) создайте новый VirtualHost на 443м порту. Ниже приведены только директивы, отвечающие за работу с сертификатом, остальные можно скопировать по аналогии из имеющегося для 80-го порта:

SSLEngine on
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLCertificateFile /var/www/httpd-cert/ваш_домен.crt
SSLCertificateKeyFile /var/www/httpd-cert/ваш_домен.key
SSLCACertificateFile /var/www/httpd-cert/ваш_домен.crt-bundle
ServerName ваш_домен
...

6. Проверьте корректность синтаксиса конфигурационного файла:
# /etc/init.d/httpd configtest
Syntax OK
Перезапустите Apache и проверьте работу сайта с https://, если все сделано правильно - в адресной строке при этом тем или иным способом будет обозначен факт того, что передаваемые данные шифруются и сертификат подтвержден.

Установка сертификата утилитами из консоли: CentOS, nginx

1. Поместите все 4 файла (приватный ключ, сохраненный в файле ваш_домен.key, и файлы сертификатов ваш_домен.crt , PositiveSSLCA2.crt и AddTrustExternalCARoot.crt ) в директорию /var/www/httpd-cert/.

2. Установите владельца и группу всех файлов в root:
# chown root:root /var/www/httpd-cert/ваш_домен.key /var/www/httpd-cert/ваш_домен.crt /var/www/httpd-cert/PositiveSSLCA2.crt /var/www/httpd-cert/AddTrustExternalCARoot.crt

3. Установите права на файл ключа "только для владельца, только для чтения":
# chmod 400 /var/www/httpd-cert/ваш_домен.key

4. Создайте файл цепочки сертификатов:
# cat /var/www/httpd-cert/AddTrustExternalCARoot.crt >> /var/www/httpd-cert/ваш_домен.crt
# cat /var/www/httpd-cert/PositiveSSLCA2.crt >> /var/www/httpd-cert/ваш_домен.crt
Проверить подлинность цепочки сертификата можно так:
# openssl verify /var/www/httpd-cert/ваш_домен.crt
/var/www/httpd-cert/ваш_домен.bundle: OK
Посмотреть информацию об сертификате - например так:
# openssl x509 -text -in ваш_домен.crt

5. Внесите в конфигурационный файл nginx, в модуль server, следующие директивы:
server {

Ssl on;
ssl_certificate /var/www/httpd-cert/ваш_домен.crt;
ssl_certificate_key /var/www/httpd-cert/ваш_домен.key;

Server_name your.domain.com;
...
}
Обратите внимание, что это должен быть первый, и желательно единственный VirtualHost на этом IP-адресе на 443 порту.

6. Перезапустите nginx командой
# /etc/init.d/nginx restart
и проверьте работу сайта с https://, если все сделано правильно - в адресной строке при этом тем или иным способом будет обозначен факт того, что передаваемые данные шифруются и сертификат подтвержден.

Для чего необходим SSL-сертификат

HTTP-протокол, по которому в настоящий момент передается большинство html-страниц в сети Интернет, не может защитить данные, передаваемые между сервером и браузером посетителя. К таким данным можно отнести любую передаваемую информацию: пароли, номера телефонов, e-mail и т.д.

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

Установка SSL-сертификат на ваш сайт позволяет:

Для интернет-магазина наличие SSL-сертификата позволит использовать такие сервисы как: Google Merchant и некоторые платежные шлюзы, например, Яндекс.Кассу.

Наличие SSL-сертификата является одним из факторов поискового ранжирования для ПС Google и Яндекс . Сервис Яндекс Вебмастер также выводит уведомление с рекомендацией использовать SSL-сертификат:

Более подробная информация о необходимости использования SSL-сертификата есть в .

2 способа подключения SSL-сертификата для домена интернет-магазина на InSales

Заказать SSL-сертификат через бэк-офис сайта

Для заказа SSL-сертификата через бэк-офис интернет-магазина на InSales перейдите в раздел Настройки -> Домены -> Нажмите на имя домена , к котрому нужно подключить SSL-сертификат.

В настройках домена нужно выбрать на каких страницах сайта использовать HTTPS:

1. Только при оформлении заказа - это самый безопасный вариант в случае, если сайт уже проиндексирован поисковыми системами. При использовании HTTPS только для страницы оформления заказа шифруются страницы корзины и оформления заказа. На индексацию сайта это никак не повлияет.

2. Для всего сайта - в этом случае будет выполняться шифрование всех страниц сайта. Актуально использовать для новых сайтов, которые еще не проиндексированы поисковыми системами. В случае если сайт уже проиндексирован в инструменах поисковых систем для веб-мастеров нужно будет внести соответствующие настройки, чтобы страницы сайта не выпадали из индекса.

После нажатия на кнопку "Сохранить" будет выполнено перенаправление на страницу "Ваши домены" , где у домена, к которому подключается SSL-сертификат будет статус "Ожидает оплаты" , а в разделе "Аккаунт" будет выставлен счет на получение SSL-сертификата.


Для оплаты получения SSL-сертификата перейдите в раздел "Аккаунт" -> "Счета" и оплатите счет любым удобным способом.


После оплаты счета SSL-сертификат будет автоматически подключен для вашего домена в течение 4-х часов (для всех старых url-адресов будут сформированы 301-ые редиректы на соотв. страницы с https в соответствии с требованиями поисковых систем).

После этого переход сайта на HTTPS завершится. Вам необходимо будет лишь добавить версию сайта на https в Яндекс Вебмастер и указать её в качестве главного зеркала в разделе Индексирование - Переезд сайта:


В течение нескольких дней после отправки заявки придет уведомление о смене главного зеркала. Также Вы можете добавить версию сайта на https в Google Search Console. При этом никаких дополнительных настроек для Google выполнять не нужно.

Дополнительно: если Вы вносили изменения в файл robots.txt стоит заменить директивы, содержащие адрес домена с http на https.

Загрузить свой SSL-сертификат

К домену, привязанному к сайту на InSales, также можно подключить сторонний SSL-сертификат.

Мы поддерживаем все типы SSL-сертификатов от любых поставщиков.

Для подключения стороннего SSL-сертификата необходимо запросить у поставщика Приватный ключ и всю Цепочку сертификатов .

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

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

Если настроить SSL неверно, пользы не будет даже от наилучшего сертификата

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

Алексей выбрал SSL сертификат от поставщика, обещавшего самый высокий уровень защиты за несколько кликов. Изучив информацию, Алексей понял, что простого сертификата с проверкой только домена будет недостаточно. Он выбрал решение среднего класса и заказал SSL сертификат с проверкой компании. Ранее мы уже рассматривали разные уровни валидации .

Пройдя проверку и получив файлы сертификата, Алексей взялся за его установку. Он шаг за шагом следовал руководству по установке. Но что-то пошло не так… Страница начала загружаться медленней, временами была недоступной, и, как выяснилось в тесте от Qualys SSL Labs, не была действительно защищенной. Что же произошло?

Ошибки конфигурации из-за устаревшего руководства

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

Например, в инструкции отсутствовало указание, что нужно отключить SSL 3-й версии. Уже давно известно о небезопасности протоколов шифрования SSLv3 и RC4, и существует достаточно альтернатив для них. В октябре 2015 года поисковый гигант Google решил попрощаться с этими небезопасными стандартами. Поэтому мы посоветовали Алексею отключить эти SSL-протоколы и использовать TLS в версиях 1.0, 1.1 и 1.2.

Конфигурация SSL при обмене ключами

Далее мы объяснили Алексею, что срок действия сертификата, доверенность центра сертификации, а также используемые алгоритмы хэширования также влияют на оценку. Алексей выбрал очень хороший SSL сертификат, поэтому к достижению хорошей оценки оставалось всего несколько шагов. На самом деле, сертификаты EV с расширенной проверкой оцениваются выше, это Алексей знал и ранее, но позволил себе сэкономить. Тем не менее, он проследил, чтобы при выпуске сертификата использовался длинный приватный ключ, который он сам хранит на защищенном компьютере. Алексей защитил сертификатом имена пользователей и пароли, как он и планировал. Но ошибки в настройке SSL могут сделать даже наилучший сертификат бесполезным.

Cookies также следует защищать

Алексей решил использовать файлы Cookies. Он добавил соответствующее предупреждение для посетителей сайта и указал на использование этого технологии в Политике конфиденциальности.

Тем не менее, он не заметил одну деталь: файлы cookies также необходимо защищать, в противном случае возрастает возможность проведения MITM-атаки. С помощью специальных флагов можно установить, будут ли cookies передаваться по защищенному HTTPS-соединению или по незащищенному HTTP-соединению.

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

Использование HSTS для устранения ошибок

Как мы видим, возможность управлять зашифрованными сайтами через HTTP, то есть по незащищенному каналу, открывает большую дыру в безопасности. Эту проблему можно решить с помощью механизма HSTS. HSTS (сокращенно от «HTTP Strict Transport Security») – это технология, которая принудительно активирует защищенное HTTPS-соединение. Все современные браузеры используют HSTS как стандарт. Активированный HSTS устанавливает, что (HTTP-)сервера должны использовать защищенное соединение. Также HSTS-стандарт обязывает прикладные программы взаимодействовать с сайтом только по зашифрованному каналу. В двух словах: HSTS предотвращает использование HTTP и активирует HTTPS-соединение.

OCSP для увеличения секретности

SSL сертификат Алексея содержит URL-адрес ответчика OCSP , которым управляет центр сертификации, выдавший SSL сертификат. Этот URL-адрес проверяется браузерами при установлении соединения с сайтом по протоколу HTTPS, чтобы определить, не отозван ли сертификат. Таким образом, можно исключить его неправомерное использование. После того, как соединение с веб-сайтом установлено, отправляется следующий запрос на OCSP-ответчик. Даже это краткое описание процесса показывает, что дополнительное соединение с ответчиком обеспечивает более высокий уровень секретности.

С помощью метода «OCSP-Степлинг» можно решить проблемы, вызванные OCSP. Через определенные промежутки времени, например, каждый час, веб-сервер получает OCSP-ответ о состоянии собственного сертификата. Этот ответ отправляется непосредственно браузеру пользователя при первичном рукопожатии. Соединение между браузером пользователя и OCSP-ответчиком с этой целью не требуется. Безопасность процесса обеспечивается тем, что ответ OCSP–ответ всегда подписан OCSP-ответчиком центра сертификации, и эту подпись проверяет браузер.

HPKP — пиннинг открытого ключа

Можно ли доверять сертификату из цепочки корневого и промежуточных сертификатов? Чтобы получить ответ на этот вопрос, используется процедура, называемая HPKP, сокращенно от HTTP Public Key Pinning. Пиннинг открытого ключа позволяет определить, когда открытый ключ сертификата был изменен для определенного хоста. Это может произойти со скомпрометированными сертификатами. Таким образом, HPKP становится механизмом, который проверяет подлинность сертификатов SSL/TLS.

Правильная настройка SSL сертификата: инструкции, которым можно доверять

Конечно же, инструкциям по установке доверять можно и нужно, но они должны быть актуальными. Следующие рекомендации из надежных источников помогут вам избежать ошибок:

  • используйте безопасное HTTPS-соединение для всех веб-сервисов;
  • автоматическое перенаправление: чтобы избежать незашифрованных обращений к серверу, настройте автоматическое перенаправление на HTTPS-версию;
  • библиотеки TLS: полагайтесь только на последние версии. При использовании TLS вы никого не исключаете, но если вы применяете незащищенный SSL, вы также включаете и потенциальных хакеров;
  • настройте HSTS, чтобы гарантированно исключить незашифрованные соединения. Это можно сделать двумя способами: во-первых, вы можете дополнить заголовок HSTS так, чтобы браузер обращался только к HTTPS-версии сайта. Во-вторых, вы можете поместить свой сайт в список предварительной загрузки HSTS. Он оповещает современные браузеры, что HTTP-обращения необходимо автоматически перенаправлять на HTTPS;
  • заказывайте SSL/TLS сертификаты только на доверенных сайтах;
  • лучше всего заказывайте SSL сертификаты с расширенной проверкой (


Просмотров