お忙しいところ申し訳ないのですが、DjangoでSSL化を考えていたのですが、Let's Encryptの証明書の発行ができません。

＜開発環境＞  
Conoha VPS 1G  
OS CentOS7.5  
Apache 2.4.6  
python 3.6.5  
Django 2.0.7

<https://hombre-nuevo.com/vps/vps0023/>  
を参考に設定しましたが、証明書の発行でエラーが出ます。

＜Django 側の設定＞

・settings.py に追記

```

    CERT_ROOT = os.path.join(BASE_DIR, '.well-known')
    CERT_URL = '/.well-known/'
    
    ALLOWED_HOSTS = ['www.[取得したドメイン]','[取得したドメイン]']
    
```

・urls.py に追記

```

    from django.conf.urls.static import static
    from django.conf import settings
    
    urlpatterns += static(settings.CERT_URL, document_root=settings.CERT_ROOT)
    
```

・テスト用の静的ファイルを作成

```

    /var/www/cgi-bin/***/---/.well-known/acme-challenge/test.html
    
```

(WEBブラウザにて表示されています)  
*** → Django Project name  
--- → Django app name

＜ポート＞  
80  
443  
開放済み

＜証明書発行時コマンド＞

```

    certbot certonly --webroot -w /var/www/cgi-bin/***/---/.well-known/ -d [取得したドメイン wwwなし] --email=[メールアドレス]
    
```

＜エラー内容＞

```

    IMPORTANT NOTES:
     - The following errors were reported by the server:
    
       Domain: [取得したドメイン wwwなし]
       Type:   unauthorized
       Detail: Invalid response from
       http://[取得したドメイン wwwなし]/.well-known/acme-challenge/oMwTbqaN_LocYGh1OywMgoES6LZkaeY5TJIfwkIu8Jc:
       "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
       <html><head>
       <title>404 Not Found</title>
       </head><body>
       <h1>Not Found</h1>
       <p"
    
       To fix these errors, please make sure that your domain name was
       entered correctly and the DNS A/AAAA record(s) for that domain
       contain(s) the right IP address.
    
```

ドメインは、ムームードメインにて取得し、現状SSLなしで正常に動いています。  
DNSの設定ですが、

＜DNSの設定＞

```

    A(通常)    @ TTL 3600 [IP-Adress]
    A(通常)    www TTL 3600 [IP-Adress]
    NS @ TTL 3600 ns-a1.conoha.io
    NS @ TTL 3600 ns-a2.conoha.io
    NS @ TTL 3600 ns-a3.conoha.io
    
```

＜Apache .conf＞

```

    LoadModule wsgi_module /usr/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
    WSGIPythonPath /var/www/cgi-bin/***
    
    WSGIScriptAlias / /var/www/cgi-bin/***/***/wsgi.py
    Alias /static/ /var/www/cgi-bin/***/---/static/
    
    <Directory //var/www/cgi-bin/***/***/wsgi.py>
      <Files wsgi.py>
        Require all granted
      </Files>
    </Directory>
    
    <Directory /var/www/cgi-bin/***/---/static>
        Require all granted
    </Directory>
    
```

＜Apache ssl.conf＞ 最終行に追記

```

    Alias /.well-known/acme-challenge/ /var/www/cgi-bin/***/---/.well-known/acme-challenge/
    <location .well-known="">
        Options -Indexes
    </location>
    
```

DNS側の問題のようですが、なかなか解決できず心が折れています・・・。  
もし、何か解決策や誤りがある場合はご教授くださいますようお願いいたします。

お忙しいところ大変申し訳ございませんが、よろしくお願いいたします。
CC BY-SA 4.0
2018-07-19T04:44:20.337
46717
2018-07-19T06:34:19.327
2018-07-19T06:34:19.327
26333
26333
question
django ssl letsencrypt
DjangoでLet's Encryptの証明書発行ができません＞＜。
＜証明書発行時コマンド＞は、-w オプションでドメインのルートを指定するので、次のように修正する必要があると思います。

```

    certbot certonly --webroot -w /var/www/cgi-bin/***/--- -d [取得したドメイン wwwなし] --email=[メールアドレス]
    
```

なお、最近の`Let's
Encrypt`の設定は自動化が進んで非常に簡単になっています。今回のケースだと`apache`プラグインを入れると以下で可能で、最終行への追記や`-w`の指定は不要です。入力が必要な項目はプロンプトで入力を求められますが項目数は少なくなっています。

```

    sudo certbot --apache
    
```

または、Apacheの設定を自分でする場合は、

```

    sudo certbot --apache certonly
    
```
CC BY-SA 4.0
2018-07-19T06:17:31.680
46722
2018-07-19T06:17:31.680
15171
46717
answer