Ошибка 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