Nginx + SSL(無料!)Let’s Encryptで設定しよう
![ssl](https://alphacast.jp/wp-content/uploads/2019/08/ssl-1024x767.jpg)
Nginx + SSL無料!Let’s Encryptを設定しよう(Django+Ubuntu編)
世の中SSLはあたりまえ。Googleも「やれ」と言ってます。
でも有料はイヤ。1,000円でもイヤ(笑)
Let’s Encryptがあるじゃないか
まずはご紹介。
Let’s Encryptは無料で取得可能なSSL/TLS証明書の認証局です。
証明書の発行プロセスが自動化されており、面倒な作業は一切不要!
早速Nginxへの登録方法を紹介します。いたって簡単なのでトライしてみてください。
以下、設定済みの方はこの項目は読み飛ばして下さい
Nginxの設定をホスト名に変更
1 |
$sudo cp -a /etc/nginx/sites-available/hogehoge /etc/nginx/sites-available/hogehoge.com$sudo vi /etc/nginx/sites-available/hogehoge.com |
nginxとdjangoを接続している設定ファイル名を分かり易いようにドメイン名に変更しましょう。
変更した後、スクリプトチェックとリロードを忘れずに。
1 2 |
$sudo nginx -t ←設定ファイルにエラーが無いかチェック $sudo systemctl reload nginx ←Nginxリロード! |
さて、作成した設定ファイルを、いつも通り/sites-enabledにシンボリックリンク張りますか。
1 2 |
$sudo ln -s /etc/nginx/sites-available/hogehoge.com /etc/nginx/sites-enabled/ $sudo unlink /etc/nginx/sites-enabled/hogehoge ← コピー前のファイルは要らないので消している |
では早速SSL化作業開始
まずはNginxのwebrootに以下のディレクトリを作成します。
作成後に所有者を変更(webapp:webappとかwebユーザーに書き換えてください)
1 2 |
$sudo mkdir -p /var/www/letsencrypt $sudo chown [username]:[groupname] /var/www/letsencrypt |
おっけーですか?
環境の準備は整いました。
設定ファイルをいじる
先ほどコピーしたドメイン名の設定ファイルを開き、以下に変更。
後でもう少しいじるのでしばしお付き合いください。
設定ファイル:$sudo vi /etc/nginx/sites-available/hogehoge.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
server { listen 80; server_name hogehoge.com; location = /favicon.ico {access_log off; log_not_found off;} location /static/ { root /var/www/hogehoge; } location /media/ { root /var/www/hogehoge; } location ^~ /.well-known/acme-challenge/ { ←このブロックを追加 allow all; root /var/www/letsencrypt/; ←先ほど作ったディレクトリのフルパス default_type "text/plain"; try_files $uri =404; } location/ { include proxy_params; proxy_pass http://unix:/run/gunicorn/hogehoge.sock; } } |
Nginx再起動忘れずに
しつこいですが、再起動を忘れずに。
1 2 |
$sudo nginx -t ←設定ファイルにエラーが無いかチェック $sudo systemctl reload nginx ←Nginxリロード! |
いよいよインストール!
UbuntuサーバからLet’s EncryptでSSL/TLS証明書を”申請””するには「certbot」というクライアントを使います。なのでインストール
1 2 3 |
$sudo apt -y install certbot $certbot --version ←インストール出来たか確認 certbot 0.23.1 |
certbotコマンド実行
少しオプションが複雑ですが以下を実行して下さい。
もちろんhogehoge.comはご自身のドメインに書き換えてくださいね。
1 |
sudo certbot certonly --webroot -w /var/www/letsencrypt -d hogehoge.com |
実行すると以下を質問されます。
・メールアドレス → 適当にご自身のアドレスを入れてください
・Agree? → 「A」
・Yes/No? → 「Y」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): <送達可能なメールアドレス> ------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- <span style="color: #ff0000;">(A)gree/(C)ancel: A </span> ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- <span style="color: #ff0000;"> (Y)es/(N)o: Y </span> Obtaining a new certificate ... (略)... IMPORTANT NOTES: - <span style="color: #ff0000;">Congratulations!</span> Your certificate and chain have been saved at: ... (略)... |
最後のメッセージの「Congratulations!」を必ず確認してください。
ラスト!
Nginx の設定ファイルに、 SSL/TLS 関連の設定を追加します。
基本黒字の場所は変更しなくて良いはずです。赤字のみ。
1 |
$sudo vi /etc/nginx/sites-available/hogehoge.com |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
server { listen 443 ssl; server_name hogehoge.com; ssl_certificate /etc/letsencrypt/live/hogehoge.com/fullchain.pem; #追加 ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /var/www/hogehoge; } location ^~ /.well-known/acme-challenge/ { allow all; root /var/www/letsencrypt/; default_type "text/plain"; try_files $uri =404; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn/hogehoge.sock; } } server { listen 80 default_server; server_name _; return 301 https://hogehoge.com$request_uri; } |
くどいようですが、再起動(笑)
1 2 |
$sudo nginx -t ←設定ファイルにエラーが無いかチェック $sudo systemctl reload nginx ←Nginxリロード! |
SSLでアクセス!
ブラウザから https://hgehoge.com にアクセス
以上です!以外と簡単ですね!
まとめ
無料ってすばらしい!
そして複雑な設定や認証キーのやり取りが不要!
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。