2016-07-18 19 views
6

Ich bin mit einer Django-Website und Verwendung von können für meine SSL verschlüsseln. Die Konfiguration des Rahmens ist so, dass ich keinen Zugriff erlauben kann, auf: http://url.com/.xxxxVerwenden Sie können verschlüsseln ohne Kontrolle über das Stammverzeichnis

Was ich freien Zugang ermöglichen kann, ist: http://url.com/static/.xxxx

Meine/static/URL akzeptieren kann und Host keine zufälligen Dateien kann verschlüsseln Bedürfnisse . Gibt es eine Möglichkeit, certbot support/static/anstatt nur/für die URL zu verwenden?

Dank

EDIT

Ich habe eine Arbeit um, dass akzeptabel ist für mich gefunden. Beim weiteren Graben habe ich festgestellt, dass /.well-known/ immer das Basisverzeichnis für die SSL-Prüfung ist. Das bedeutet, dass wir ein statisches Verzeichnis hinzufügen können, das gut mit certbot funktioniert. Hier ist, wie zunächst fügen Sie diese in Ihre Apache-Konfiguration:

Alias /.well-known/ /var/www/XXXXX/website/static/.well-known/ 
<Directory /var/www/XXXXX/website/static/.well-known/> 
Require all granted 
</Directory> 

Dann fügen Sie diese in Ihre Datei settings.py:

STATIC_ENCRYPT_URL = '/.well-known/' 
STATIC_ENCRYPT_ROOT = '/var/www/XXXXX/website/static/' 

Fügen Sie diese in Ihrem urls.py:

urlpatterns = [ 
    ... 
] + static(settings.STATIC_ENCRYPT_URL, document_root=settings.STATIC_ENCRYPT_ROOT) 

Setzen Sie Ihren Webserver zurück. Jetzt haben Sie eine spezielle URL /.well-known/, die jede Datei hostet, die certbot benötigt.

Ich möchte immer noch eine bessere Antwort als diese.

+1

Deaktivieren Sie vorübergehend Django und führen Sie einen einfachen TCP-Dateiserver aus. – hjpotter92

+2

Das funktioniert auf Dev, aber ich kann den Produktionsserver nicht offline so nehmen. –

+0

Es dauert weniger als 2 Minuten für den gesamten LetsEncrypt-Prozess. Sie können auch den kostenlosen Plan von CloudFlare für ssl verwenden. – hjpotter92

Antwort

4

Bei anderen Benutzern kommen auf diese Weise, wie ich von Google tat, ist hier, wie ich diese Situation verbessert:

Ich war unzufrieden mit meinen Möglichkeiten, wenn es darum ging, ACME Herausforderungen Lassen Sie sich Encrypt zu erstellen, wenn ein Django laufen Anwendung. So, I rolled my own solution and created a Django app! Grundsätzlich können Sie Ihre ACME Herausforderungen als nur ein weiteres Objekt verwalten, und die App wird die richtige Endpunkt-URL erzeugen.

Einfach pip install django-letsencrypt und folgen Sie der README, um auf Ihrem Weg zu sein.