Ошибка SSL/TLS при тестировании API Django через HTTPS на Localhost

В попытке протестировать API через HTTPS-соединение локально, я следовал подходу, описанному здесь Эваном Гримом, где я использую stunnel4 в качестве посредника между моими запросами и сервером API.

Вот минималистичный urls.py, который сгенерирует токен при условии правильного имени пользователя и пароля.

from django.urls import include, path
from django.contrib import admin
from rest_framework_simplejwt import views as jwt_views

urlpatterns = [
    path("admin", admin.site.urls),
    path('api/token/', jwt_views.TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', jwt_views.TokenRefreshView.as_view(), name='token_refresh'),]

Я также изменил файл конфигурации stunnel4 следующим образом.

pid=

cert = stunnel/stunnel.pem
sslVersion = all
foreground = yes
output = stunnel.log
options = NO_SSLv2

[https]
accept=8443
connect=8001
TIMEOUTclose=1

Однако, когда я пробую любой маршрут через postman или curl (на порту 8443), я получаю следующие ошибки.

Я получаю ошибку tls_setup_handshake:internal от stunnel4.

2021.12.19 18:51:22 LOG5[16]: Service [https] accepted connection from 127.0.0.1:36502
2021.12.19 18:51:22 LOG3[16]: SSL_accept: ../ssl/statem/statem_lib.c:109: error:141FC044:SSL routines:tls_setup_handshake:internal error
2021.12.19 18:51:22 LOG5[16]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket

Postman выдает следующую ошибку в своей консоли, когда я отправляю через него запросы.

Error: write EPROTO 48081748826312:error:10000438:SSL routines:OPENSSL_internal:TLSV1_ALERT_INTERNAL_ERROR:../../third_party/boringssl/src/ssl/tls_record.cc:594:SSL alert number 80

Когда я пробую curl, я вижу следующее.

curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to localhost:8443

Есть ли рекомендации по корректировке моего подхода для облегчения локального тестирования?

HTTPS=1 python manage.py runserver 0.0.0.0:8001

Вернуться на верх