Протокол ssl как настроить
Перейти к содержимому

Протокол ssl как настроить

  • автор:

Протокол ssl как настроить

image

Часто задаваемые вопросы, руководства и другое

Настройка сертификата для SSL/TLS и доступных протоколов

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

Запустите веб-браузер.

В адресной строке браузера введите «https://IP-адрес устройства» (где «IP-адрес устройства» — это IP-адрес устройства).

Пример: https://192.168.1.2

image

Пример: https://Общий_принтер

Если включено имя NetBIOS, можно также использовать имя узла.

Пример: https://brnxxxxxxxxxxxx

Имя NetBIOS можно найти в отчете о конфигурации сети.

При необходимости введите пароль в поле Вход в систему , а затем нажмите Вход в систему .

image

Пароль по умолчанию для управления настройками устройства находится на задней панели устройства с пометкой Pwd .

Перейдите в навигационное меню, а затем выберите Сеть > Сеть > Протокол .

image

Откройте , если навигационное меню не отображается на левой стороне экрана.
Щелкните по значку Настройки сервера HTTP .
В раскрывающемся списке Выбор сертификата выберите сертификат, который требуется настроить.
Щелкните по значку Отправить .
Нажмите Да , чтобы перезагрузить сервер печати.
Связанные темы:
Эта страница была полезной?

Please do not include any personal information in your comment. This form is used for feedback only.

Please do not include any personal information in your comment. This form is used for feedback only.

Благодарим вас за отзыв!

Благодарим вас за отзыв!

Настройка протокола SSL/TLS

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

Порядок осуществления шифрованной связи по протоколам SSL/TLS

  1. Для доступа к принтеру с компьютера пользователя запросите сертификат устройства SSL/TLS и открытый ключ.
  2. Сертификат устройства и ключ общего пользования отправляются с принтера на компьютер пользователя.
  3. Ключ совместного доступа, созданный компьютером, шифруется с использованием общего ключа, отправленного на устройство и затем расшифрованного с использованием личного ключа на принтере.
  4. Общий ключ используется для шифрования и дешифрования данных, обеспечивая безопасную передачу данных.

Процесс настройки при использовании самозаверенного сертификата

  1. Создание и установка сертификата устройства Создайте и установите сертификат устройства с помощью панели управления или приложения Web Image Monitor.
  2. Включение SSL/TLS Включите параметр SSL/TLS, используя Web Image Monitor.

Процесс настройки при использовании сертификата, выданного центром сертификации

  1. Создание сертификата устройства и обращение в центр сертификации После создания сертификата устройства в приложении Web Image Monitor обратитесь в центр сертификации. Процедура подачи заявки после создания сертификата зависит от центра сертификации. Следуйте процедуре, указанной центром сертификации.
  2. Установка сертификата устройства Установите сертификат устройства с помощью Web Image Monitor.
  3. Включение SSL/TLS Включите параметр SSL/TLS, используя Web Image Monitor.
  • Чтобы убедиться, включена ли конфигурация SSL/TLS, введите «https://(IP-адрес аппарата или имя хоста)/» в адресной строке веб-браузера для доступа к этому принтеру. Если появляется сообщение «Невозможно отобразить страницу», проверьте конфигурацию, так как текущая конфигурация SSL/TLS недействительна.
  • Если вы включите SSL/TLS для IPP (функции принтера), отправляемые данные будут шифроваться, предотвращая их перехват, анализ или подделку.

Что такое SSL и TLS, как установить и настроить

Основная установка и настройка будет проходить под Debian 8 Jessie, вебсервер NGINX, в бекенде Apache или PHP-FPM.
Инструментарий: Far Manager и Putty.
Команды вводятся в консоль SSH.
Если вы авторизованы не под root , добавляйте перед консольными командами sudo

Что такое SSL, TLS

SSL (англ. secure sockets layer — уровень защищённых cокетов) — криптографический протокол, который обеспечивает безопасную связь между сервером и клиентом. Этим протоколом шифруется интернет-трафик, который невозможно прослушать. В 2014 году был скомпрометирован (была обнаружена уязвимость), из-за чего на основании протокола SSL 3.0 был создан стандарт TLS, учитывающий ошибки предшественника, а SSL фактически прекратил своё развитие.

TLS (англ. Transport Layer Security — безопасность транспортного уровня) — криптографический протокол, обеспечивающий защищённую передачу данных от сервера к клиенту. TLS является потомком SSL 3.0. В основе работы лежат симметричное шифрование для конфиденциальности, асимметричная криптография для аутентификации и коды аутентичности сообщений для сохранения их целостности.

Данный протокол широко используется в приложениях, работающих с сетью Интернет, таких как веб-браузеры, работа с электронной почтой, обмен мгновенными сообщениями и IP-телефония (VoIP).

Сегодня, когда говорят об SSL, то, как правило, подразумевают его потомка TLS. Поэтому, когда говорят, что нужно установить SSL сертификат на сайт, то, как правило, подразумевают установку TLS сертификата.

Почему нужно использовать SSL/TLS

Есть как минимум одна веская причина: вы не сможете воспользоваться преимуществами нового протокола HTTP2 (HTTP/2 приходит на смену текущему стандарту HTTP/1.1), если для вашего сайта не установлен и настроен сертификат безопасности SSL/TLS.

Также безопасность данных в интернете является всё более востребованной и актуальной темой. И чем дальше, тем больше: Google заявил, что наличие SSL-шифрования на сайте является положительным фактором в ранжировании сайта в поисковой выдаче. Также, наличие HTTPS является обязательным атрибутом для каждого e-commerce сайта: интернет-магазинов, сервисов по приёму платежей, обменников, а также платных сервисов, данные пользователей которых являются желанной добычей хакеров. Чтобы предотвратить фишинг-атаку на пользователя и не дать обмануть его, и нужно настроить SSL-сертификат безопасности и шифрования данных, чтобы он видел подтверждение того, что находится на правильном сайте.

Бесплатные сертификаты SSL/TLS от Let’s Encrypt

Рекомендую воспользоваться сертификатами SSL/TLS от Let’s Encrypt, так как:

  1. Они бесплатные;
  2. Подойдут большинству проектов;
  3. Установка и настройка относительно несложные, и не займут много сил и времени.

Из минусов — сертификат актуален 90 дней, поэтому настроим его обновление на автомате.

Если у Вас виртуальный хостинг, можете написать в службу поддержки, вам помогут получить сертификат и всё настроят. Если же у вас свой сервер, описание получения сертификата SSL, TLS и его настройки на сервере будет дальше.

Установка Certbot

Сам гайд по установке Let’s Encrypt советует делать всё через Certbot. Сработает, если есть доступ по SSH.

Certbot — это утилита от Let’s Encrypt, помогающая в настройке SSL/TLS сертификата на сервер и его дальнейшем обновлении.

Установка Certbot в Debian 8 Jessie

Помощник Certbot в выборе версии сервера

Помощник Certbot в выборе версии сервера

Сначала убедимся, что certbot ещё не установлен:
certbot —help
Если увидите ошибку, значит, надо его установить.

apt-get install certbot -t jessie-backports

Если вылезла ошибка The value ‘jessie-backports’ is invalid for APT::Default-Release as such a release is not available in the sources
, нужно настроить поддержку Backports

Как настроить поддержку Backports

Пишете в консоль (добавляет дополнительный источник для пакетов):

echo "deb http://ftp.debian.org/debian jessie-backports main contrib non-free" >> /etc/apt/sources.list

Потом обновляете список пакетов:

apt-get update

и снова пробуете установить Certbot:

apt-get install certbot -t jessie-backports

Затем проверяете, как вышло

certbot --help

certbot --help

Установка Certbot в CentOS 7

Установка происходит так:

yum -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
yum install certbot

Если у Вас CentOS 6, воспользуйтесь универсальной инструкцией ниже.

Универсальная инструкция по установке Certbot
  1. Скачиваем Certbot:
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
mv certbot-auto /usr/local/bin/certbot
certbot --help

certbot --help

Должы увидеть что-то подобное:

Настройка Certbot

Теперь, когда certbot установлен (а вы можете убедиться в этом, задав команду
certbot —help ), советую заглянуть в cron-задачи

cd /etc/cron.d

Расписание Cron для Certbot

В директории должен появиться файл certbot с примерно следующим содержанием

Самая последняя строчка — это правило cron, которое будет проверять сертификаты SSL, TLS дважды в день и обновлять устаревшие. К сожалению, он не перезагружает вебсервер, поэтому Вам нужно добавить правило && /etc/init.d/nginx reload вручную в конец строки.

В итоге, строка будет выглядеть примерно так:

0 */12 * * * root test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew && /etc/init.d/nginx reload
    Открываем расписание планировщика (сначала приведу пример для nano, затем для vim):

crontab -e
0 */12 * * * test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew && /etc/init.d/nginx reload

Далее, подготовка, тестирование и установка сертификата для сайта.

Подготовка и тестирование конфигурации SSL, TLS

Перед тем, как получить сертификат SSL/TLS, хорошей практикой будет протестировать правильность настройки сервера. Дело в том, что если есть проблема, которая не даст получить или обновить сертификат: центр сертификации имеет жёсткие лимиты обращений к нему (10 в час). И если есть ошибка, которую никак не удаётся выявить, то можно очень быстро упереться в лимит. Чтобы избежать этой проблемы, можно воспользоваться Staging Environment от Let’s Encrypt.
Staging Environment — это тестовая среда, полностью имитирующая общение с центром сертификации, и выдающая недоверенные сертификаты-пустышки. Однако, она имеет повышенные лимиты обращения к ней и служит исключительно для тестирования и настройки конфигурации сервера:

  • Выдача и обновление сертификата на 1 домен имеет лимит 30 000 в неделю.
  • Ошибка валидации имеет лимит 60 раз в час.

Чтобы воспользоваться тестовой окружающей средой, достаточно для certbot использовать ключ —staging .
Например, так можно протестировать выдачу сертификата:

certbot certonly --webroot -w /var/www/example.com -d example.com -d www.example.com --email [email protected] --agree-tos --staging

Кстати, посмотреть, как происходит обновление сертификатов, но без реального обновления, просто проверить правильность конфигурации, можно командой:

certbot renew --dry-run

А обновить все сертификаты на сервере вручную можно командой

certbot renew

После перезагрузите NGINX

nginx -s reload

Установка сертификата SSL, TLS от Let’s Encrypt

Вводим команду в консоль Putty:

certbot certonly --webroot -w /var/www/example.com -d example.com -d www.example.com --email [email protected] --agree-tos
  • -w /var/www/example.com — путь до директории с файлами сайта
  • -d example.com -d www.example.com — прописываем имена доменов
  • —email [email protected] — ваш email, куда можно будет восстановить доступ
  • —agree-tos — согласие с лицензионными требованиями

Если домен в кириллице, надо получить его Punnycode (например, яндекс.рф имеет код xn--d1acpjx3f.xn--p1ai ) и пользоваться этим кодом. Сделать это можно с помощью Punycode-конвертера.

Сертификат Let

Если всё нормально, вам выдаст сообщение об успешном завершении создания сертификата

Итак, сертификат установлен в директорию /etc/letsencrypt/live//

Идём настраивать NGINX.

Настройка SSL, TLS в NGINX

Открываем конфигурационный файл вашего сайта.
Если NGINX настроен как тут, то конфигурационный файл может быть расположен тут:
/etc/nginx/vhosts/example.com.conf

Для уменьшения загрузки процессора официальная документация рекомендует

  • установить число рабочих процессов равным числу процессоров,
  • разрешить keep-alive соединения,
  • включить разделяемый кэш сессий,
  • выключить встроенный кэш сессий
  • и, возможно, увеличить время жизни сессии (по умолчанию 5 минут):

Изменения я буду комментировать

# Создаём отдельный server для перенаправления с http на https server < server_name example.com www.example.com; # Можно указать любые домены и поддомены, смотря как вы настроили сертификат listen 1.2.3.4:80; #где 1.2.3.4 - айпи вашего сервера rewrite ^(.*) https://$host$1 permanent; # Редирект HTTP/1.1 301 Moved Permanently с http на https ># А это основной сервер с https server < server_name example.com www.example.com; # Копируем из верхнего сервера listen 1.2.3.4:443 ssl http2; #вместо 1.2.3.4 вставляете IP своего сервера. http2 включчает поддержку протокола http/2 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # Сертификат ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # Ключ # Рекомендации по кешированию запросов keepalive_timeout 70; # 70 секунд держим соединение открытым keepalive_requests 150; # 150 запросов максимум на 1 соединение, после закрываем ssl_session_cache shared:SSL:10m; # Разделяемый между всеми процесами кеш сессий на 10 байт с названием SSL. 1 Мб вмещает около 4000 сессий ssl_session_timeout 10m; # 10 минут - максимальное время жизни сессии # А строки ниже - для усиления безопасности соединения ssl_prefer_server_ciphers on; # Указывает, чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; # Типы шифров ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Разрешённые типы протоколов . # Тут остальные правила NGINX

Сохранили, проверили, перезагрузили

nginx -t && service nginx reload

Настройка SSL, TLS на WordPress

Для примера, возьмём сайт на WordPress и настроим на нём SSL/TLS, сделаем его доступным по HTTPS.
Нужно будет обязательно пройтись по списку и внести соответствующие изменения:

  1. Переписать в базе данных все ссылки, заменив http://example.com на https://example.com
    Для этого, вы можете воспользоваться WP-Cli или специальной утилитой Seach Replace DB
  2. Переписать в файлах темы все ссылки, заменив http:// на https:// или //
  3. Отредактировать wp-config.php , а именно, перед define('WP_DEBUG', false); добавить:

// example.com меняем на своё имя домена define('WP_HOME', 'https://example.com'); define('WP_SITEURL', 'https://example.com'); // Принудительная авторизация в админке по защищённому протоколу define('FORCE_SSL_ADMIN', true); // Чтобы предотвратить бесконечный редирект с http на https if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';

Как перенести сайт с HTTP на HTTPS правильно

Я считаю, что можно не ждать склейки http и https, и сразу настроить редирект на https, они всё равно склеятся, но далее приведу рекомендации, которые дают специалисты по поисковому продвижению

Если вы переводите существующий проиндексированный сайт на SSL, то сначала рекомендуется, чтобы Yandex склеил http и https версии сайта. Для этого, вы должны сначала настроить сайт так, чтобы он был доступен и по http, и по https верно, а затем прописать в robots.txt нужный адрес в директиве Hosts.

Не забудьте добавить новую версию сайта на HTTPS в Яндекс Вебмастер и Google Webmasters.

Вот, скажем, пример файла robots.txt для сайта sheensay.ru

User-agent: Yandex Disallow: Host: https://sheensay.ru User-agent: * Disallow: Sitemap: https://sheensay.ru/sitemap.xml

Далее, рекомендуется, чтобы все внутренние ссылки были относительными либо начинались строго с протокола https:// . У всех внешних javascript скриптов, ссылок, вставленных картинок, аудио- и видеоплееров, и других внешних объектов протоколы http:// заменяются на абсолютные https:// или относительные // .
Приведу пример:

  • НЕПРАВИЛЬНО:
  • ПРАВИЛЬНО:
  • ПРАВИЛЬНО:

Далее, проверяем секцию head, ищем теги и , и следим, чтобы адреса в них начинались с https://
Таким образом, вы добьётесь более быстрой склейки разных версий сайта в одну.

Далее, дождавшись, когда Яндекс всё склеит правильно, можно настроить 301 редирект с http на https

Как настроить 301 редирект с HTTP на HTTPS

Для NGINX мы настраивали редирект выше, поэтому если редирект настроили в нём, в Apache ничего не меняем. Но, для примера, покажу блок, ответственный за него

301 редирект с HTTP на HTTPS в NGINX

Тут нужно указать 2 блока server , для http (там мы настраиваем редирект) и для https

server < server_name example.com www.example.com; # Можно указать любые домены и поддомены, смотря как вы настроили сертификат listen 1.2.3.4:80; #где 1.2.3.4 - айпи вашего сервера rewrite ^(.*) https://$host$1 permanent; # Редирект HTTP/1.1 301 Moved Permanently с http на https >server

301 редирект с HTTP на HTTPS в .htaccess (Apache)

Если у Вас основной сервер Apache, в его конфигурационном файле ( apache.conf ) или в .htaccess в корне сайта прописываем

RewriteEngine On RewriteBase / RewriteCond % !=1 [NC] RewriteRule ^(.*) https://%/$1 [L,R=301]
RewriteEngine On RewriteCond % !^443$ RewriteRule .* https://%% [R=301,L]

Эта конструкция отлавливает все запросы к портам, отличным от 443 (а именно на 443 порту сидит SSL), и редиректит на нужную версию сайта с HTTPS.

Если у вас во фронтенде NGINX, то редирект в .htaccess может и не сработать. В таком случае, рекомендую воспользоваться редиректом в WordPress.

301 редирект с HTTP на HTTPS в WordPress

Чтобы сделать 301 редирект на https в wordpress, достаточно найти в корне сайта wp-config.php и прописать там в любом месте (если ещё не прописано, example.com меняете на свой домен):

define( 'WP_HOME', 'https://example.com' ); define( 'WP_SITEURL', 'https://example.com' );

В большинстве ситуаций этого достаточно.

Если доступа к wp-config.php нет, то есть ещё один вариант.
Код ниже используете в MU Plugin, также можно создать обычный плагин (требует активации) или вставить в functions.php рабочей темы:

Настройка HTTPS в админке WordPress

Перед включением кода убедитесь, что сайту уже присвоен HTTPS: (Настройки — Общие)

Как проверить правильность работы SSL, TLS

В интернете можно найти множество сервисов, которые помогут определить, как правильно вы установили SSL и настроили сайт под него.
Один из таких сервисов: ssllabs.com

Рекомендую проверять правильность установки и настройки сертификата SSL/TLS с помощью ssllabs.com

Вы просто вводите адрес сайта и через несколько минут получаете результаты теста. Например, вот высший результат тестирования ( A+ ) по домену https://sheensay.ru

Результат тестирования SSL/TLS

Результат тестирования SSL/TLS

Как усилить безопасность SSL, TLS

Бывает так, что сертификат установлен, а тестирование ssllabs показывает не лучший грейд безопасности.
Чтобы добиться заветного A+ , нужно правильно настроить NGINX.
Для этого, сначала запускаем следующую команду, которая сгенерирует нужные ключи для Forward Secrecy (прямая секретность означает, что если третья сторона узнает какой-либо сеансовый ключ, то она сможет получить доступ только к тем к данным, что защищены этим ключом, не более):

openssl dhparam -out /etc/letsencrypt/dhparam.pem 2048

Затем, необходимо присутствие следующих записей в конфигурации сервера:

server < server_name sheensay.ru www.sheensay.ru; ssl_session_cache shared:SSL:10m; # Разделяемый между всеми процесами кеш сессий на 10 байт с названием SSL. 1 Мб вмещает около 4000 сессий ssl_session_timeout 10m; # 10 минут - максимальное время жизни сессии add_header Strict-Transport-Security "max-age=31536000;"; # Заголовок, принудительно включающий защищённое соединение, минуя небезопасный HTTP # Заголовок Content Security Policy - отвечает за то, что считать безопасным подгружаемым контентом на странице add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline' *.yandex.ru; style-src https: 'unsafe-inline' fonts.googleapis.com; img-src https: data:; font-src https: data: fonts.googleapis.com; child-src https: www.youtube.com; report-uri /csp-report"; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/sheensay.ru/chain.pem; # домен меняете на свой resolver 8.8.4.4 8.8.8.8 valid=300s; resolver_timeout 10s; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!EXP:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_prefer_server_ciphers on; ### Чтобы у нас заработал Forward Secrecy, сгенерируем ключ командой ниже: ## openssl dhparam -out /etc/letsencrypt/dhparam.pem 2048 ### После генерации расскомментируем строку ниже ssl_dhparam /etc/letsencrypt/dhparam.pem; ### Дальше другие настройки сервера ### .

После всех манипуляций, не забудьте перезагрузить NGINX

service nginx reload

Видео установки и настройки SSL сертификата в хостинге Beget

Если Вы хотите установить SSL, TLS сертификат на сайт, который расположен в Beget, Вам пригодится следующая видеоинструкция:

Как установить SSL/TLS, если на сервере несколько сайтов

Обычно, проблемы возникают, когда на сервере уже есть 1 сайт на HTTPS, и на этот сервер нужно перенести другой сайт.
Либо, ещё более патовая ситуация: нужно перенести сайт на HTTP и сделать его доступным по HTTPS. Проблема будет возникать из-за того, что на сервере на порту 443 уже есть сайт с сертификатом SSL/TLS, и обращения будут идти на него, и certbot не сможет прописать сертификат сайту, а сайты по HTTP будут недоступны.
Для решения этой проблемы можно сгенерировать временный самоподписанный сертификат:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Эта команда создаст 2 файла в директории, из которой вызывается команда (обычно это /root ):

  • cert.pem — это сертификат SSL/TLS;
  • key.pem — это ключ к сертификату.

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

Ещё пример, когда такое решение пригодится — на CloudFlare, настроенном на Flexible SSL, плагин Broken Link Checker при сканировании выдаёт ошибки доступа к изображениям Connection Failed . И тут тоже помогут самоподписанные сертификаты на 443 порту сайта.

Ключи прописываете в конфигурации сервера (пример есть ниже). Далее:

  • Если сайт нужен по HTTP, просто делаете редирект с HTTPS на HTTP, по аналогии с редиректом на HTTPS, только наоборот (пример далее);
  • Если сайт нужен по HTTPS, делаете сайт доступным по HTTP, затем получаете сертификат с помощью certbot, а дальше всё как по инструкции выше — редирект на HTTPS, прописывание сертификатов, настройка URL, и так далее.

Пример, как сделать редирект с HTTPS на HTTP в NGINX

Допустим, самоподписанные сертификаты сгенерированы командой выше и располагаются в каталоге /root/ . Тогда, чтобы настроить редирект с HTTPS на HTTP для нового сайта example.com , мы можем использовать следующую конфигурацию ( example.com заменяем на свой домен, 1.2.3.4 — на свой IP сервера):

server < server_name example.com www.example.com; listen 1.2.3.4:443 ssl; ### Вместо 1.2.3.4 нужно подставить IP сервера ssl_certificate /root/cert.pem; # Путь к самоподписанному сгенерированному сертификату ssl_certificate_key /root/key.pem; # Путь к ключу самоподписанного сертификата rewrite ^(.*) http://$host$1 permanent; >server

SSL certificate problem: certificate has expired

Что делать, если при запросах curl вылезает ошибка:

curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

Самым правильным вариантом будет обновление сертификатов на сервере. В Linux Debian, Ubuntu это делается так:

update-ca-certificates --fresh

Эта команда обновляет символические ссылки сертификатов в /etc/ssl/certs .

Если это не помогло, то нужно будет обновить пакеты системы.

Сначала убедитесь, что пакеты безопасности в /etc/apt/sources.list выглядят примерно так:

deb http://security.debian.org/debian-security stretch/updates main contrib non-free deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

Если всё в порядке, обновляем пакеты

apt update && apt upgrade -y

После обновления изменения можно проверить с помощью команды:

apt-cache policy ca-certificates

Настройка HTTPS для чайников

HTTPS (Hypertext Transfer Protocol Secure) — расширение протокола HTTP поддерживающее шифрование. Данные, передаваемые по протоколу HTTPS «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивается защита этих данных. В отличие от HTTP для HTTPS по умолчанию используется TCP-порт 443.

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

Введение

Чтобы подготовить сервер для обработки https-соединений, администратор должен получить и установить в систему сертификат для этого веб-сервера. Сертификат можно создать самостоятельно с помощью Unix утилиты ssl-ca из пакета OpenSSL, но подписанный данным методом сертификат не является безопасным и большинство браузеров выдают предупреждения об этом. Часть агентов также блокирует сайты с такими сертификатами, например IPhone приложения.

Сертификаты подписанные компаниями-сертификаторами избавлены от данной проблемы, но требуют оплаты для использования. Основные компании-сертификаторы: VerySign, SSLCOM, DigiCert и другие. Так сложилось, что я предпочитаю использовать SSLCOM в основном из-за их 90-дневного бесплатного периода использования для новых ключей, получение которого и будет описано в данной статье. За три месяца можно основательно протестировать проект, понять приоритеты, сделать полноценный запуск и в дальнейшем уже решить будете ли вы продлевать действие сертификата за деньги.

Запрос на получение сертификата (CSR)

CSR — запрос на получение сертификата, требуется для подписи ключей компанией-сертификатором. Я создаю его в консоли Unix-систем, например в терминале на стороне сервера. Если у вас нет такой возможности, вы можете создать CSR онлайн: https://www.reg.ru/sslcertificate/generate_key_and_csr

# Создадим директорию для работы mkdir -p ~/csr && cd ~/csr # Создадим приватный ключ и запрос на сертификат openssl req -new -newkey rsa:2048 -nodes -keyout .key -out .csr

Все поля CSR должны заполняться на английском. Код страны — двух буквенный Alpha2 (RU для России).

your_domain_name — имя домена для которого создается сертификат

Common name — адрес домена (без www). Wildcart записи вида *.domen.com не поддерживаются на бесплатном тарифе.

example

Скопируйте полученный ключ .key и файл запроса .csr в надежное место.

Получение подписанных SSL ключей на 90-дневной период

Подписывать ключи будем у http://ssl.com. Для начала работы войдите на сервис или зарегистрируйтесь.

После входа попадаем на страницу задач и выбираем buy certificate для продолжения.

page

На открывшейся странице выбираем Free SSL.

page

Нажимаем кнопку GET и попадаем на первый шаг процесса подписания нашего сертификата. В открывшейся странице выберите чекбокс I want to submit my CSR now для добавления полученного нами на предыдущем шаге CSR.

В данной статье мы будем настраивать Nginx поэтому из выпадающего списка я выбрал соответствующую опцию.

page

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

Пятый шаг — подтверждение домена. Возможно два варианта, размещение файла на сервере или подтверждение по электронной почте. Адреса требуемые для подтверждения через email не всегда доступны, поэтому я обычно выкладываю на сервер полученный файл.

page

Пример конфигурации для Nginx (файл D3AD7299FFC0954B0FD047063ABB7EFD.txt лежит в папке /home/user ):

location = /D3AD7299FFC0954B0FD047063ABB7EFD.txt < alias /home/user/D3AD7299FFC0954B0FD047063ABB7EFD.txt; >

После получения подписанного сертификата можно будет удалить файл и изменения в настройках.

Если проверку вы прошли успешно, остается только ждать подтверждения от компании-сертификатора, что может занять от нескольких часов до суток.

page

После добавления ключей компанией сертификатором вам будет выслано уведомительное письмо. Откройте страницу заказа сертификата и загрузите его к себе на компьютер. Для Nginx вы получите файл ca_bundle.txt

Полученный файл переименуйте в формат .bundle.crt и вместе с ключом который мы создали на первом шаге ( .key ) положите на сервер.

Настройка Nginx для работы с SSL

Для включения SSL в Nginx добавьте в конфигурацию сервера следующие настройки:

server < . listen 443; ssl on; ssl_protocols SSLv3 TLSv1; ssl_certificate //.bundle.crt; ssl_certificate_key //.key; . >

Для автоматического направления всех HTTP запросов на HTTPS, обычно достаточно следующей конфигурации:

# HTTPS settings server < listen 443; ssl on; ssl_protocols SSLv3 TLSv1; ssl_certificate //.bundle.crt; ssl_certificate_key //.key; . > # HTTP settings server < listen 80 rewrite ^(.*) https://$server_name$1 permanent; >

И не забудьте обновить сертификаты через три месяца! 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *