Django と Letsencrypt

まろ茶ネットの公開WEBサーバーをSSL化するに当たってLeysencryptを導入しましたが、現在作成中のポータルサイトで採用しているDjango WEBアプリでは -webrootによるサイト登録がうまく行かない問題がありました。(現在はテスト用仮想サーバにて動作確認中)

certbot-auto で登録するサイトのwebroot(DocumentRoot?)に一時的な静的ファイルを作成して、登録URLからアクセスできるかどうかを確認しているようですが、DjangoではDocumentRootに静的ファイルを作成しても、WEBアプリのエンジンによりURLからアクセスできないようになっている感じ。

そこで、urls.py などを細工して、Letsencryptの静的ファイルにアクセスできるように誘導する必要がありました。

<project>/settings.py

# for Letsencrypt certification 
CERT_ROOT = os.path.join(BASE_DIR, '.well-known') 
CERT_URL = '/.well-known'

注).well-known はcertbot-autoが作成する静的ファイル

<project>/urls.py

urlpatterns = [ 
    path('admin/', admin.site.urls),
    path('', include('top.urls')), 
    path('tinymce/', include('tinymce.urls')),
] 
urlpatterns += static(settings.CERT_URL, document_root=settings.CERT_ROOT)

urlpatterns はリストに直接入れても良いような気がするが、上記のようにしないとうまく行きませんでした。

これでDjangoアプリサイトをLetsencryptに登録出来るようになりました。

下記サイトを参考にしました(と言いますか、まんまの情報です)