Как разместить django с grpc в Production с ssl?
Я использую Django с grpc, для этого я использую django-rpc-framework.
Для разработки я использовал
python manage.py grpcrunserver --dev
.
Теперь мне нужно заняться производством. Могу ли я использовать
python manage.py grpcrunserver 127.0.0.1:8000 --max-workers 5
для производства, если да, то как? Потому что я не знаю, как запустить его в отделенном режиме.
Я думал использовать hypercorn, потому что hypercorn работает с http2, но он также требует ssl сертификат, что хорошо, но когда я подключаю клиента к серверу (я использую самоподписанный сертификат, просто для проверки), я получаю следующую ошибку.
Для генерации сертификата я выполнил следующую команду.
openssl req -x509 -newkey rsa:4096 -days 3650 -nodes -keyout ca-key.pem -out ca-cert.pem
openssl req -newkey rsa:4096 -nodes -keyout server-key.pem -out server-req.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
Чтобы запустить сервер, я попробовал следующую команду.
hypercorn --keyfile server-key.pem --certfile server-cert.pem kumpali.asgi:application
В kreya я использую файл ca-cert.pem
в качестве сертификата.
Когда я попытался подключить свой сервер к приложению flutter, я получил следующую ошибку.
Error: gRPC Error (code: 14, codeName: UNAVAILABLE, message: Error connecting: HandshakeException: Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: Hostname mismatch(handshake.cc:359)), details: null, rawResponse: null, trailers: {})