#python #django #ssl #url #ssl-certificate
#python #django #ssl #url #ssl-сертификат
Вопрос:
Я приобрел SSL-сертификат онлайн и теперь нахожусь в середине проверки моего хоста. Как это работает:
- Это дает мне файл
- Я должен сделать этот файл доступным через определенный URL на моем хостинге.
- Если содержимое файла совпадает, это проверяется.
Теперь я перехожу к шагу 2.
Я пытаюсь вернуть файл (статический) с URL-адреса, как того требует Comodo для проверки моего сервера. Итак, в принципе, я думаю, что если я получу доступ к этой ссылке:
http://your(sub)domain/.well-known/pki-validation/<filename.txt>
Руководство здесь:
Ребята, вы можете помочь, как я могу вернуть файл с этим URL? Спасибо!
Комментарии:
1. Вам нужно проверить файл только один раз, поэтому поместите этот файл в свой корневой статический каталог и измените
STATIC_URL = '.well-known/pki-validation/'
в settings.py.2. и это все, что мне нужно сделать?
Ответ №1:
Спасибо за всю вашу помощь. На самом деле я обнаружил, что это было довольно просто.
Я просто ввел путь в свой urls.py
, как показано ниже:
urlpatterns = [
path('.well-known/pki-validation/xxxyyyzzz.txt', read_file),
]
Затем моя read_file
функция просто возвращает файл с
def read_file(request):
f = open('.well-known/pki-validation/xxxyyyzzz.txt', 'r')
file_content = f.read()
f.close()
return HttpResponse(file_content, content_type="text/plain")
Комментарии:
1. Пробовал все другие методы, и они не сработали. Только что закончил делать это, и это отлично работает и выполняет свою работу.
2. в моем случае даже не нужно было ничего открывать, просто вернул код активации в
file_content
Ответ №2:
-
В вашем приложении Django поместите ваш файл в статическую папку
yourapp/static/.well-known/pki-validation/<filename.txt>
-
Псевдоним
/static/.well-known/
to/.well-known/
на vhost вашего приложения<VirtualHost *:80> DocumentRoot /var/www/yourapp Alias /media/ /var/www/yourapp/media/ Alias /static/ /var/www/yourapp/static/ Alias /static/.well-known/ /var/www/yourapp/.well-known/ </VirtualHost>
Комментарии:
1. Спасибо! Как мне выполнить второй шаг? Как мне создать псевдоним для этого в моем приложении vhost?
2.
Alias /static/.well-known/ /var/www/yourapp/.well-known/
3. Мне так жаль, что я все еще не мог этого понять. Где и что именно такое app vhost?
4. Django application vhost == виртуальный хостинг приложения . docs.djangoproject.com/en/2.1/howto/deployment/wsgi/modwsgi
Ответ №3:
Проверка контроля домена не входит в обязанности Django, вам лучше подтвердить свой домен с помощью записи CNAME. Руководство по включению проверки ssl с помощью django и nginx находится здесь: https://simpleisbetterthancomplex.com/tutorial/2016/05/11/how-to-setup-ssl-certificate-on-nginx-for-django-application.html
Ответ №4:
Вот что я в итоге сделал, чтобы заставить это работать без необходимости изменять Django urls.py:
- Размещено <filename.txt > в /var/www/<your_django_site>/static/.well-known/pki-validation/<filename.txt >
- Псевдоним /.хорошо известный /var/www/<your_django_site>/статический/.хорошо известный
Вот как должна выглядеть запись VirtualHost в конфигурации Apache соответствующих частей:
<VirtualHost *:80>
# ...
DocumentRoot /var/www/<your_django_site>
Alias /static /var/www/<your_django_site/static
# This is the only line I needed to add to my existing Apache config to do HTTP SSL validation.
# This will make it so that http://<your_domain>/.well-known/pki-validation/<filename.txt>
# will point to where you stored that text file and can be validated.
Alias /.well-known /var/www/<your_django_site/static/.well-known
# ...
</VirtualHost>