Проблема

На локальном (дев-) сервере, при работк с OSPanel / OpenServer – не устанавливается https сертифкат он вроде тут и не нужен).

Однако антифирус касперского считает иначе, и постоянно пытается разоврвать соединение с “небезопасным сайтом” (во всплывающем окне).

Со временем, эти кликанья надоедают и хочется от них избавиться, установив локальный сертификат SSL…

Решение

#1 Устанавливаем утилиту mkcert

В официальном репозитории есть инструкции для разных систем, но так как мы хотим установить сертификаты для OpenServer, значит у нас — Windows.

Для установки на Windows сначала понадобится установленный Chocolatey или Scoop.

Внимание: здесь и далее запускаем консоль от имени администратора: см. запуск консоли на картинке ниже.

Устанавливанем Chocolatey: https://chocolatey.org/install#individual

# Setup chocolatey

# check rights - OK
Get-ExecutionPolicy
RemoteSigned

# setup
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

В зависимости от выбранного пакетного менеджера (используем Chokolatey) запускаем в терминале одну из следующих команд:

# Chocolatey
choco install mkcert

После установки можно проверить успешность, активировав команду mkcert.

Затем запустить команду:

mkcert -install

#2 Создаём сертификаты для доменов

  • Переходим в директорию C:\OSPanel\userdata\config\cert_files (у вас путь может отличаться) и запускаем из неё терминал.
cd C:\OSPanel\userdata\config\cert_files
  • Запускаем команду mkcert %имядомена%. Через пробел можно указать все домены, которые вам нужны, например mkcert example.local wpsite.develop test.local myblog.localhost
mkcert teleparser

	Created a new certificate valid for the following names 📜
	 - "teleparser"

	The certificate is at "./teleparser.pem" and the key at "./teleparser-key.pem" ✅

	It will expire on 14 June 2027 🗓
  • В директории появятся сгенерированные файлы сертификатов.
ls

    Каталог: D:\OSPanel\userdata\config\cert_files

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        23.12.2016     13:55            424 dhparam.pem
-a----        23.12.2016     13:54           1090 rootCA.crt
-a----        23.12.2016     13:54           1708 rootCA.key
-a----        23.12.2016     13:54             17 rootCA.srl
-a----        23.12.2016     13:54            973 server.crt
-a----        23.12.2016     13:54            891 server.csr
-a----        23.12.2016     13:54           1675 server.key
-a----        14.03.2025     17:59           1708 teleparser-key.pem
-a----        14.03.2025     17:59           1639 teleparser.pem

#3 Вносим изменения в конфигурацию сервера

Узнать, какой сервер у вас локально установлен (nginx или apache) – можно так (у меня – Nginx 1.23):

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

В Nginx настройка SSL-сертификата выполняется в конфигурационном файле сервера. В отличие от Apache, Nginx не использует директивы вроде <IfFile>, но вы можете указать пути к сертификату и ключу напрямую в блоке server.

Вот пример, как это можно сделать:

server {
    listen 443 ssl;
    server_name your_domain.com;

    # Пути к SSL-сертификату и ключу
    ssl_certificate /path/to/your/certificate/%host%.pem;
    ssl_certificate_key /path/to/your/private/key/%host%-key.pem;

    # Дополнительные настройки SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Другие настройки сервера
    ...
}

Правим наш файл D:\OSPanel\userdata\config\Nginx_1.23_vhost.conf: создаем новый блок с настройками конкретно под наш домен с SSL (внизу):

# Блок для всех хостов по HTTP
server {
}

# Блок для хоста с SSL по HTTPS
server {
    listen 443 ssl;
    server_name teleparser;

    ssl_certificate      %sprogdir%/userdata/config/cert_files/teleparser.pem;
    ssl_certificate_key  %sprogdir%/userdata/config/cert_files/teleparser-key.pem;
    #ssl_trusted_certificate  '';

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        root %sprogdir%/userdata/domains/teleparser;
        index index.html index.php;
    }
}

Пояснение

  • ssl_certificate: Указывает путь к файлу сертификата (в вашем случае это %host%.pem).
  • ssl_certificate_key: Указывает путь к файлу приватного ключа (в вашем случае это %host%-key.pem).
  • ssl_protocols: Определяет поддерживаемые версии протокола SSL/TLS.
  • ssl_ciphers: Определяет набор шифров, которые будут использоваться.
  • ssl_prefer_server_ciphers: Указывает, что сервер должен выбирать шифры, а не клиент.

Примечание

  • В Nginx нет аналога директивы <IfFile> из Apache. Если вам нужно проверить существование файла перед использованием, это можно сделать с помощью скриптов или условий на уровне операционной системы перед запуском Nginx.
  • Убедитесь, что пути к файлам сертификата и ключа указаны правильно и доступны для чтения процессом Nginx.

Настройка для Apache

  1. Переходим на уровень выше в каталог C:\OSPanel\userdata\config и открываем в редакторе файл нужного (активного у вас) модуля Apache %версия модуля%_vhost.conf в моём случае, например, это Apache_2.4-PHP_8.0-8.1_vhost.conf
  2. Находим строку, начинающуюся с SSLEngine on
    SSLEngine       on
    #Protocols      http/1.1
    #Header         always set Strict-Transport-Security "max-age=94608000"
    #SSLCACertificateFile    ""
    #SSLCertificateChainFile ""
    SSLCertificateFile       "%sprogdir%/userdata/config/cert_files/server.crt"
    SSLCertificateKeyFile    "%sprogdir%/userdata/config/cert_files/server.key"

    и модифицируем её таким образом

    <IfFile "%sprogdir%/userdata/config/cert_files/%host%.pem">
    	SSLEngine       on
    	#Protocols      http/1.1
    	#Header         always set Strict-Transport-Security "max-age=94608000"
    	#SSLCACertificateFile    ""
    	#SSLCertificateChainFile ""
    	SSLCertificateFile       "%sprogdir%/userdata/config/cert_files/%host%.pem"
    	SSLCertificateKeyFile    "%sprogdir%/userdata/config/cert_files/%host%-key.pem"
    </IfFile>
  3. Осталось перезагрузить сервер и готово!
    • В дальнейшем, для добавления новых доменов, просто повторяем второй шаг и перезагружаем сервер.
  4. Не забываем настроить редирект с http на https: для этого в корень сайта добавляем файл .htaccess вида:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

 

 

Tags

Нет Ответов

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Рубрики


Подпишись на новости
👋

Есть вопросы?