Вот пошаговое руководство по добавлению HTTPS на ваш сервер FastAPI:

  1. Получите сертификат SSL/TLS. Вам потребуется сертификат SSL/TLS для вашего домена. Вы можете получить сертификат от центра сертификации (ЦС) или использовать бесплатный сертификат от Let’s Encrypt. Let’s Encrypt предлагает бесплатные сертификаты SSL/TLS, которые автоматически обновляются каждые 90 дней.
  2. Установка зависимостей Вам потребуется установить необходимые зависимости для поддержки SSL/TLS на вашем сервере FastAPI. Следующая команда устанавливает необходимые зависимости:
pip install fastapi uvicorn[standard] cryptography

3. Создайте самозаверяющий сертификат (необязательно). Если у вас нет сертификата SSL/TLS, вы можете создать самозаверяющий сертификат для целей тестирования. Вы можете сгенерировать самозаверяющий сертификат с помощью OpenSSL:

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

4. Настройте свое приложение FastAPI. Чтобы включить HTTPS в вашем приложении FastAPI, вам необходимо создать экземпляр класса SSLContext и настроить его с помощью вашего сертификата и ключа. Вы можете сделать это, создав новый объект ssl.SSLContext и задав для атрибутов certfile и keyfile путь к вашему сертификату и файлам ключей: pythonCopy code

import ssl
app = FastAPI()
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain('/path/to/cert.pem', keyfile='/path/to/key.pem')

5. Запустите свой сервер с поддержкой SSL/TLS. Вы можете запустить свой сервер FastAPI с поддержкой SSL/TLS, используя команду uvicorn с параметрами --ssl-keyfile и --ssl-certfile:

uvicorn main:app --ssl-keyfile /path/to/key.pem --ssl-certfile /path/to/cert.pem

Кроме того, вы можете передать аргумент ssl функции uvicorn.run():

if __name__ == "__main__":
    uvicorn.run("main:app", host="0.0.0.0", port=8000, ssl=ssl_context)

Вот и все! После этих шагов ваше приложение FastAPI теперь должно работать с поддержкой HTTPS.

после добавления поддержки HTTPS на ваш сервер FastAPI вы можете использовать HTTPS вместо HTTP при выполнении запросов к API.

Чтобы использовать HTTPS, просто измените URL-адрес в клиентском коде с http:// на https://. Например, если ваш сервер FastAPI работает на https://example.com, вы должны отправлять запросы на https://example.com/api/endpoint вместо http://example.com/api/endpoint.

Важно отметить, что использование HTTPS обеспечивает дополнительный уровень безопасности и помогает защитить конфиденциальные данные, такие как токены доступа и учетные данные пользователя, от перехвата и отслеживания. Поэтому всегда рекомендуется использовать HTTPS при общении с веб-API через Интернет.

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

Если вы получили сертификат от центра сертификации (ЦС), срок действия сертификата будет зависеть от срока действия, установленного ЦС. Как правило, сертификаты SSL/TLS, выдаваемые центрами сертификации, имеют срок действия один или два года.

Если вы получили бесплатный сертификат от Let’s Encrypt, срок действия сертификата составляет 90 дней. Однако Let’s Encrypt обеспечивает автоматизированный процесс обновления сертификатов, поэтому вам не нужно вручную заменять сертификат каждые 90 дней.

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