Меню

Как включить ssl в настройках php



Опции контекста SSL

Опции контекста SSL — Список опций контекста SSL

Описание

Опции контекста для протоколов ssl:// и tls://

Опции

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

Требовать проверки используемого SSL-сертификата.

По умолчанию TRUE .

Требовать проверки имени узла.

По умолчанию TRUE .

Разрешить самоподписанные сертификаты. Требует verify_peer .

По умолчанию FALSE

Расположение файла сертификата в локальной файловой системе, который следует использовать с опцией контекста verify_peer для проверки подлинности удалённого узла.

Если параметр cafile не определён или сертификат не найден, осуществляется поиск в директории, указанной в capath . Путь capath должен быть к корректной директории, содержащей сертификаты, имена которых являются хешем от поля subject, указанного в сертификате.

Путь к локальному сертификату в файловой системе. Это должен быть файл, закодированный в PEM, который содержит ваш сертификат и закрытый ключ. Он дополнительно может содержать открытый ключ эмитента. Закрытый ключ также может содержаться в отдельном файле, заданным local_pk .

Путь к локальному файлу с приватным ключем в случае отдельных файлов сертификата ( local_cert ) и приватного ключа.

Идентификационная фраза, с которой ваш файл local_cert был закодирован.

Прервать, если цепочка сертификата слишком длинная.

По умолчанию проверка отсутствует.

Устанавливает список доступных алгоритмов шифрования. Формат этой строки описан в разделе » шифры(1).

По умолчанию принимает значение DEFAULT .

Если установлено в TRUE , то будет создана опция контекста peer_certificate , содержащая сертификат удаленного узла.

Если установлено в TRUE , то будет создана опция контекста peer_certificate_chain , содержащая цепочку сертификатов.

Если установлено в TRUE , то будет включено указание имени сервера. Включение SNI позволяет использовать разные сертификаты на одном и том же IP-адресе.

Отключает сжатие TLS, что помогает предотвратить атаки типа CRIME.

peer_fingerprint string | array

Прерваться, если дайджест сообщения не совпадает с указанным хешом.

Если указана строка ( string ), то её длина определяет какой алгоритм хеширования будет использован: «md5» (32) или «sha1» (40).

Если указан массив ( array ), то ключи определяют алгоритм хеширования, а каждое соответствующее значение является требуемым хешом.

Устанавливает уровень безопасности. Если не указан, используется стандартный уровень безопасности, указанный в библиотеке. Уровни безопасности описаны в » SSL_CTX_get_security_level(3).

Доступна с PHP 7.2.0 и OpenSSL 1.1.0.

Список изменений

Версия Описание
7.2.0 Добавлен security_levels . Требуется OpenSSL >= 1.1.0.

Примечания

Замечание: Так как ssl:// — это низлежащий транспортный протокол для оберток https:// и ftps:// , то любые опции контекста, которые применяются к ssl:// будут также применяться к https:// и ftps:// .

Замечание: Чтобы была доступна возможность указания имени сервера (SNI, Server Name Indication), PHP должен быть скомпилирован с OpenSSL 0.9.8j или более поздней. Используйте константу OPENSSL_TLSEXT_SERVER_NAME чтобы определить, поддерживается ли SNI.

Смотрите также

User Contributed Notes 7 notes

I am unable to load a PEM that was generated with the stunnel tools. However, I am able to use PHP calls to generate a working PEM that is recognized both by stunnel and php, as outlined here:

This code fragment is now working for me, and with stunnel verify=4, both sides confirm the fingerprint. Oddly, if «tls://» is set below, then TLSv1 is forced, but using «ssl://» allows TLSv1.2:

$stream_context = stream_context_create([ ‘ssl’ => [
‘local_cert’ => ‘/path/to/key.pem’,
‘peer_fingerprint’ => openssl_x509_fingerprint(file_get_contents(‘/path/to/key.crt’)),
‘verify_peer’ => false,
‘verify_peer_name’ => false,
‘allow_self_signed’ => true,
‘verify_depth’ => 0 ]]);

$fp = stream_socket_client(‘ssl://ssl.server.com:12345’,
$errno, $errstr, 30, STREAM_CLIENT_CONNECT, $stream_context);
fwrite($fp, «foo bar\n»);
while($line = fgets($fp, 8192)) echo $line;

CN_match works contrary to intuitive thinking. I came across this when I was developing SSL server implemented in PHP. I stated (in code):

— do not allow self signed certs (works)
— verify peer certs against CA cert (works)
— verify the client’s CN against CN_match (does not work), like this:

stream_context_set_option($context, ‘ssl’, ‘CN_match’, ‘*.example.org’);

I presumed this would match any client with CN below .example.org domain.
Unfortunately this is NOT the case. The option above does not do that.

What it really does is this:
— it takes client’s CN and compares it to CN_match
— IF CLIENT’s CN CONTAINS AN ASTERISK like *.example.org, then it is matched against CN_match in wildcard matching fashion

Examples to illustrate behaviour:
(CNM = server’s CN_match)
(CCN = client’s CN)

— CNM=host.example.org, CCN=host.example.org —> OK
— CNM=host.example.org, CCN=*.example.org —> OK
— CNM=.example.org, CCN=*.example.org —> OK
— CNM=example.org, CCN=*.example.org —> ERROR

— CNM=*.example.org, CCN=host.example.org —> ERROR
— CNM=*.example.org, CCN=*.example.org —> OK

According to PHP sources I believe that the same applies if you are trying to act as Client and the server contains a wildcard certificate. If you set CN_match to myserver.example.org and server presents itself with *.example.org, the connection is allowed.

Everything above applies to PHP version 5.2.12.
I will supply a patch to support CN_match starting with asterisk.

Источник

Настройка SSL на локальном сервере xampp / apache

Я пытаюсь получить доступ к Active Directory с моего локального веб-сервера. Для этого я использую последнюю версию xampp и PHP-скрипт под названием adLDAP . Если я правильно понимаю, мне нужно включить SSL для доступа к URL-адресам https. Я попытался сделать это, но не повезло 🙁 Может ли кто-нибудь связать учебник или объяснить мне, как установить SSL на xampp / apache для Windows 7 64bit? Любая помощь будет оценена 🙂

Часть Apache – позволяет вам открывать https: // localhost / xyz

Существует файл конфигурации xampp / apache / conf / extra / httpd-ssl.conf, который содержит всю конфигурацию ssl. Это достаточно хорошо документировано, поэтому прочитайте комментарии и посмотрите http://httpd.apache.org/docs/2.2/ssl/ . Файлы начинаются с , поэтому он имеет эффект, только если apache был запущен с модулем mod_ssl.

Откройте файл xampp / apache / conf / httpd.conf в редакторе и найдите строку

удалите хэш-метку, сохраните файл и запустите apache. Теперь веб-сервер должен начинаться с базового / стандартного ssl-конфигурации xampp; достаточно хорошо для тестирования, но вы можете прочитать немного больше о mod_ssl в документации apache.

Часть PHP – включение adldap для использования ldap над ssl

Для использования соединений «ldap over ssl» для adldap требуется расширение openssl php. Расширение openssl отправляется как dll с xampp. Вы должны «сообщить» php, чтобы загрузить эту DLL, например, имея extension=nameofmodule.dll в php.ini
Бег

Он должен показать вам, какой файл ini использует ваша установка php (может отличаться между php-apache-модулем и версией php-cli).
Откройте этот файл в редакторе и выполните поиск

удалите точку с запятой, сохраните файл и заново запустите apache.

Оказывается, OpenSSL скомпилирован и включен в php 5.3 XAMPP 1.7.2 и поэтому больше не требуется отдельная dll расширения.

Однако вам необходимо включить его в файл PHP.ini, extension=php_openssl.dll строки extension=php_openssl.dll

Я сделал большую часть предлагаемого здесь материала, все еще не работал. Пробовал это, и это сработало: откройте панель управления XAMPP , найдите кнопку Config для модуля Apache . Нажмите кнопку Config и выберите PHP (php.ini) . Откройте любой текстовый редактор и удалите полуколонец перед php_openssl . Сохранить и перезапустить Apache. Это должно быть!

Вы можете включить SSL на XAMPP, создав самоподписанные сертификаты и затем установив эти сертификаты. Введите приведенные ниже команды для создания и переноса сертификатов в ssl-папки.

openssl genrsa -des3 -out server.key 1024

openssl req -new -key server.key -out server.csr

cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

cp server.crt /opt/lampp/etc/ssl.crt/domainname.crt

cp server.key /opt/lampp/etc/ssl.key/domainname.key

(Используйте sudo с каждой командой, если вы не являетесь суперпользователем)

Теперь проверьте, что mod_ssl включен в [XAMPP_HOME] /etc/httpd.conf:

Модули LoadModule ssl_module / mod_ssl.so

Добавьте виртуальный хост в этом примере «localhost.domainname.com», отредактировав [XAMPP_HOME] /etc/extra/httpd-ssl.conf следующим образом:

Добавьте следующую запись в / etc / hosts:

Теперь попробуйте установить сертификат / попробовать импортировать сертификат в браузер. Я проверил это, и это сработало на Ubuntu.

Я прошел через все ответы и руководства по Интернету, но вот основные шаги для включения SSL ( https ) на localhost с помощью XAMPP :

Необходимые:

Выполнить -> «C: \ xampp \ apache \ makecert.bat» (дважды щелкнуть по окнам) Заполните пассивы по вашему выбору, нажмите Enter для всего, но определите «localhost» . Будьте осторожны, когда вас спросят:

Общее имя (например, полное доменное имя сервера или ваше имя) []: localhost

(Сертификаты выдаются только для доменной зоны!)

  • Перезапустить apache
  • Chrome -> Настройки -> Поиск «Сертификат» -> Управление сертификатами -> Надежные корневые центры сертификации -> Импорт -> «C: \ xampp \ apache \ conf \ ssl.crt \ server.crt» -> Должен спросить «ДА» для подтверждения!
  • https: //localhost/testssl.php -> [OK, теперь зеленый!] (любой тестовый файл html)
  • Необязательно: (если выше не работает, выполните больше этих шагов)

      Запустить XAMPP Как admin (Пуск -> XAMPP -> щелкните правой кнопкой мыши -> Запуск от имени администратора)

    XAMPP -> Apache -> Config -> httpd.conf («C: \ xampp \ apache \ conf \ httpd.conf»)

    LoadModule ssl_module modules / mod_ssl.so (удалить # сформировать начало строки)

    XAMPP -> Apache -> Config -> php.ini («C: \ xampp \ php \ php.ini»)

    extension = php_openssl.dll (удалить из начала строки)

    Перезапустите apache и хром!

    Проверьте какие-либо проблемы или статус вашего сертификата:

    Chrome -> F12 -> Безопасность -> Просмотр сертификата

    Я сделал все предлагаемые материалы здесь, и мой код все еще не работал, потому что я использовал curl

    Если вы используете curl в файле php, завиток, кажется, отклоняет весь трафик ssl по умолчанию. Быстрое исправление, которое сработало для меня, заключалось в том, чтобы добавить:

    Я считаю, что это отключает проверку SSL-сертификатов.

    Источник

    Что такое 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 —help
    Если увидите ошибку, значит, надо его установить.

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

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

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

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

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

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

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

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

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

    Универсальная инструкция по установке Certbot

    1. Скачиваем Certbot:
    2. Даём права на исполнение с помощью chmod
    3. Перемещаем certbot-auto к остальным бинарным файлам, чтобы появилась возможность начинать команды с certbot
    4. Проверяем, что получилось:

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

    Настройка Certbot

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

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

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

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

    Если строка в cron.d отстутствует, можно установить правило обновления сертификатов вручную:

    1. Открываем расписание планировщика (сначала приведу пример для nano, затем для vim):
    2. Добавляем новое правило в конце планировщика:
    3. Затем сохраняем ( Ctrl + X , сохранить кнопкой Y )

    Для vim то же самое, только при открытии планировщика нужно запустить режим редактора кнопкой Insert , внести правило для планировщика (см. выше), затем выйти из режима редактора кнопкой Esc , затем нажать комбинацию Shift + : (двоеточие), ввести буквы w q и нажать Enter , и новые правила для планировщика cron вступят в силу.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Настройка 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); добавить:

    2 и 3 строки не обязательны, если выполнили первый пункт списка.

    Про последнее можно добавить, что если WordPress находится за проксирующим сервером с SSL, но хостится на сервере без SSL (то есть, как в нашем случае, SSL на NGINX, Apache без), запросы к страницам сайта будут создавать бесконечный цикл. Чтобы его предотвратить, и используется определение в заголовках HTTP_X_FORWARDED_PROTO , наличие https в котором и будет говорить о том, что в заголовки надо будет записать метку о том, что HTTPS включен, и она будет сигнализировать Вордпрессу о том, что мы работаем на https.
    Подробности можете посмотреть тут https://codex.wordpress.org/Administration_Over_SSL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Эта команда создаст 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, и так далее.

    Источник

    Читайте также:  Как обнулить настройки в эдиусе