HTTPS сервер на скорую руку

0
+ -
0

Иногда требуется запустить локально HTTP или HTTPS сервер для тестирования. Чтобы запустить обычный HTTP сервер достаточно в терминале набрать короткую команду:

python3 -m http.server 8001 --bind 0.0.0.0

python3: команда для запуска интерпретатора Python 3.

-m http.server: флаг указывает Python запустить модуль http.server, который предоставляет простой HTTP-сервер. Это полезно для разработки и тестирования, так как позволяет быстро развернуть сервер для обслуживания файлов.

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

--bind 0.0.0.0: параметр указывает серверу слушать на всех доступных IP-адресах. Это означает, что сервер будет доступен не только локально (например, через localhost или 127.0.0.1), но и с других устройств в сети, если они могут подключиться к вашему компьютеру.

Если не указывать параметр --bind, сервер по умолчанию будет слушать только на localhost или 127.0.0.1. Это означает, что доступ к серверу будет возможен только с того устройства, на котором он запущен. Другие устройства в сети не смогут подключиться к этому серверу.

Теперь о HTTPS

Для запуска HTTPS сервера потребуется самоподписанный сертификат и приватный ключ, если его еще нет. Можно использовать OpenSSL. В терминале заходим в нужную директорию (например, директория с проектом). Пишем и запускаем команду в терминале:

openssl req -new -x509 -keyout key.pem -out cert.pem -days 365 -nodes

openssl: команда вызывает утилиту OpenSSL, которая предоставляет инструменты для работы с криптографией, сертификатами и протоколами SSL/TLS.

req: параметр указывает, что мы хотим создать запрос на сертификат (Certificate Signing Request, CSR) или самоподписанный сертификат.

-new: флаг указывает, что мы хотим создать новый запрос на сертификат или сертификат.

-x509: флаг указывает, что мы хотим создать самоподписанный сертификат вместо запроса на сертификат. Сертификат X.509 — это стандартный формат для публичных ключей и сертификатов.

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

-out cert.pem: параметр указывает название файла, в который будет записан сам сертификат. Файл будет содержать публичный ключ и информацию о сертификате.

-days 365: параметр указывает срок действия сертификата в днях. В данном примере сертификат будет действителен в течение 365 дней. После истечения этого срока сертификат станет недействительным и будет необходимо создать новый.

-nodes: флаг указывает, что приватный ключ не будет защищен паролем. Это может быть полезно для автоматизации, так как не придется вводить пароль каждый раз, когда сервер запускается. Однако это может быть менее безопасно, так как любой, кто получит доступ к файлу key.pem, сможет использовать этот приватный ключ. Учитывая, что такие ключи создаются в основном для тестирования, о безопасности беспокоиться не стоит.

Переходим с самому главному, скрипт на Python для запуска HTTPS сервера. Создаем файл server.py и записываем:

import http.server

import ssl

import webbrowser


# Настройка сервера

server_address = ('', 4443)  # Порт 4443

httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)


# Настройка SSL

context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)

context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')


httpd.socket = context.wrap_socket(httpd.socket, server_side=True)


# Сообщение о запуске сервера

url = "https://localhost:4443/index.html"

print("Сервер успешно запущен на порту 4443.")

print(f"Перейдите по ссылке для доступа к странице: {url}")


# Открытие ссылки в браузере (необязательно)

webbrowser.open(url)


# Запуск сервера

httpd.serve_forever()

Скрипт можно запустить в любимом IDE, либо ввести команду в терминале:

python3 server.py

ПРИМЕЧАНИЕ: python3 используется в Linux/MacOS, на Windows указываем просто python.

Похожие новости

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

Автору будет очень приятно узнать обратную связь о своей новости.

Комментариев 0