Блог / Статьи

Полезная информация для вашего хостинга

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

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

SSL (Secure Socket Layer) шифрует обмен данными между браузером и сервером, повышая безопасность вашего веб-сайта. Хотя использование HTTP для localhost обычно достаточно для разработки, иногда необходимо протестировать его в режиме HTTPS. Например, вам может понадобиться протестировать сервис-воркера, установить защищенные cookies, которые требуют загрузки сайта через HTTPS, или протестировать сторонний API, который обычно требует HTTPS, например, API для авторизации или платежей.

Тестирование вашего сайта с SSL во время разработки гарантирует, что все элементы, включая URL и ресурсы, такие как CSS и JavaScript, работают корректно под HTTPS. Это помогает более точно отразить производственную среду, что способствует более плавному переходу при публикации сайта.

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

Готовы начать? Поехали!

Начало работы с mkcert

mkcert упрощает процесс установки SSL-сертификатов для localhost. В отличие от традиционных методов, которые часто бывают сложными, mkcert предлагает простой подход. Он настраивает локально доверенный сертификат для разработки, автоматически устанавливая и доверяя локальному Центру сертификации (CA) на вашей системе. Этот инструмент совместим с macOS, Linux и Windows, охватывая широкий спектр сред разработки.

Если вы используете macOS или Linux, сначала нужно установить Homebrew. Пользователи Windows должны установить Chocolatey. С этими инструментами вы можете легко установить mkcert, выполнив следующие команды: 

```bash
// Для macOS или Linux
brew install mkcert && brew install nss # "nss" нужен для поддержки Firefox

// Для Windows
choco install mkcert
```

Установка SSL-сертификатов

Начните с выполнения следующей команды для создания Центра сертификации (CA), который будет подписывать ваши сертификаты: 

```bash
mkcert -install
```

Важно хранить файл rootCA-key.pem в безопасности и никогда не делиться им. Если он будет скомпрометирован, злоумышленник сможет потенциально перехватить ваши защищенные соединения с любым сайтом. Обращайтесь с этим файлом с осторожностью!

После создания CA сгенерируйте сертификат для hostname "localhost" с помощью следующей команды: 

```bash
mkcert localhost
```

Этот инструмент также достаточно универсален, чтобы создавать сертификаты для других имен хостов или даже локальных IP-адресов, таких как 127.0.0.1.

Например: 

```bash
mkcert hongkiat.local www.hongkiat.local 127.0.0.1
```

Запуск HTTP-сервера

Теперь, когда ваши SSL-сертификаты готовы, вы можете запустить локальный сервер, используя HTTPS. Для тех, кто использует Node.js, пакет `http-server` предлагает простой способ запустить сервер. Вам нужно указать пути к файлам сертификата и ключа.

Например, вот как запустить локальный сервер на порту 8080: 

```bash
http-server -S -C localhost.pem -K localhost-key.pem -p 8080
```

После запуска ваш localhost будет доступен по HTTPS по адресу https://localhost:8080

localhost1

 

Запуск с Docker и Nginx

Если в вашей среде используются Docker и Nginx, следующая конфигурация сервера позволит вам запустить HTTPS: 

```nginx
server {
    listen 443 ssl;
    server_name localhost;

    ssl_certificate /path/to/localhost.pem;
    ssl_certificate_key /path/to/localhost-key.pem;

    location / {
        root /var/www/html;
    }
}
```

Свяжите необходимые сертификаты и файлы конфигурации с вашим контейнером Docker через файл конфигурации Docker Compose, как показано ниже: 

```yaml
services:
    nginx: 
        image: nginx:latest 
        ports: 
        - "8081:443"
        volumes: 
        - ./localhost-key.pem:/etc/nginx/certs/localhost-key.pem
        - ./localhost.pem:/etc/nginx/certs/localhost.pem
        - ./nginx.conf:/etc/nginx/conf.d/default.conf
        - ./index.html:/var/www/html/index.html
```

 

Удаление mkcert

Если вы решите прекратить использование HTTPS для локальной разработки или перейти на другой метод работы с SSL-сертификатами, вам может потребоваться удалить mkcert.

Чтобы удалить mkcert с вашей системы, выполните следующую команду: 

```bash
mkcert -uninstall
```

Эта команда удаляет корневой CA как из вашей системы, так и из браузера. Также следует удалить корневой файл сертификата и любые сгенерированные пары сертификатов: 

```bash
rm -r "$(mkcert -CAROOT)"
```

Заключение

Реализация HTTPS на вашем локальном сервере важна для правильного тестирования таких функций, как сервис-воркеры, защищенные cookies и сторонние API, которые требуют безопасного соединения. mkcert предоставляет эффективный способ генерации и управления SSL-сертификатами на различных платформах и браузерах, упрощая процесс для разработчиков.