Как настроить сервер Daphne для приглашения клиентов добавить центр сертификации, выдавший мой сертификат, если они еще этого не сделали? - PullRequest
3 голосов
/ 28 мая 2020

Если я сделаю запрос к своему серверу Daphne / Django в Postman или в приложении Android, которое мы разрабатываем, Дафна предоставит сертификат, но он будет отклонен. Если я сначала сделаю простой запрос на получение https://letsencrypt.org/, а затем сделаю запрос на свой сервер, сертификат будет принят.

Как я могу убедиться, что клиент доверяет моему сертификату, даже если этот клиент впервые видит сертификат, выданный этим ЦС?

Все, что указано ниже, может служить историей того, как я изучал проблему.

Оригинальное название: SSL-сертификат работает в браузер, но не может быть проверен почтальоном

У меня есть экземпляр AWS EC2 под управлением Ubuntu 18.04, с python 3, Django, кучей зависимостей проекта, Дафна работает с ASGI, с сертификат от Let's Encrypt. Дафна использует порт 8000 для HTTP и por 4430 для HTTPS, iptables настроен на перенаправление запросов с порта 80 на 8000 и с порта 443 на 4430. Django настроен для обеспечения безопасных соединений с SECURE_SSL_REDIRECT = True в файле settings.py .

Обслуживается временная страница «Сайт в разработке», и она правильно доступна из любого браузера и каждого устройства, которое я тестировал до сих пор. Если я введу явно http, я буду перенаправлен на https и сертификат будет принят. Каждый протестированный мной браузер (Firefox, Brave, Chrome, Chrome для Android) говорит, что сертификат хорош.

Curl выводит содержимое HTML, возвращенное с сервера. Я не знаю, принимает ли он сертификат или игнорирует его.

Проблема

Почтальон, однако, говорит: «Ошибка: не удалось проверить первый сертификат». Работает только тогда, когда я отключаю "Проверка сертификата SSL", что не отвечает на мой вопрос: почему Postman не может проверить мой сертификат Let's Encrypt?

Я создаю API, который запускается на том же сервере, используя тот же домен, и он предназначен для использования мобильным приложением. В настоящее время приложение Android выдает ошибку «Ошибка типа: сбой сетевого запроса», что, как я подозреваю, может быть вызвано тем же, на что жалуется Почтальон.

Когда я раскручиваю сервер локально и настраиваю 1) приложение для использования http://localhost: 8000 и 2) сервер, не использующий SSL, он работает в браузерах, Postman и в приложении Android.

Я ищу ответы во многих местах в течение нескольких дней, поэтому любая подсказка будет очень кстати.

РЕДАКТИРОВАТЬ

Интересная подсказка:

Если я сделаю запрос своему серверу Daphne / Django , он обслуживает сертификат, который отклонен. Но если я сначала сделаю запрос на https://letsencrypt.org/, а затем сделаю запрос на свой сервер, он будет работать!

Этот шаблон верен как в Postman, так и в наше приложение Android.

Это также происходит, когда я впервые делаю запрос на https://alloy.city (вместо letsencrypt.org), который обслуживается приложением Node.js и использует сертификат, также выданный Давайте зашифруем CA.

Так что, может быть, вопрос должен быть следующим: как настроить мой сервер так, чтобы он вежливо приглашал клиентов добавить CA, выдавший мой сертификат, если они еще этого не сделали? .

Видимо, это то, что делает мой Node.js сервер.

1 Ответ

1 голос
/ 28 мая 2020

Да, в настройках коснитесь ssl-подтверждения выключено

Файл> Настройки> Общие> Проверка сертификата SSL> выключено

enter image description here

...