ALPHACAST|アルファキャスト

Nginx + SSL(無料!)Let’s Encryptで設定しよう

ssl

Nginx + SSL無料!Let’s Encryptを設定しよう(Django+Ubuntu編)

世の中SSLはあたりまえ。Googleも「やれ」と言ってます。
でも有料はイヤ。1,000円でもイヤ(笑)

Let’s Encryptがあるじゃないか

まずはご紹介。
Let’s Encryptは無料で取得可能なSSL/TLS証明書の認証局です。
証明書の発行プロセスが自動化されており、面倒な作業は一切不要!
早速Nginxへの登録方法を紹介します。いたって簡単なのでトライしてみてください。

以下、設定済みの方はこの項目は読み飛ばして下さい

Nginxの設定をホスト名に変更

$sudo cp -a /etc/nginx/sites-available/hogehoge /etc/nginx/sites-available/hogehoge.com$sudo vi /etc/nginx/sites-available/hogehoge.com 

nginxとdjangoを接続している設定ファイル名を分かり易いようにドメイン名に変更しましょう。
変更した後、スクリプトチェックとリロードを忘れずに。

$sudo nginx -t    ←設定ファイルにエラーが無いかチェック
$sudo systemctl reload nginx   ←Nginxリロード!

さて、作成した設定ファイルを、いつも通り/sites-enabledにシンボリックリンク張りますか。

$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ユーザーに書き換えてください)

$sudo mkdir -p /var/www/letsencrypt 
$sudo chown [username]:[groupname] /var/www/letsencrypt 

おっけーですか?
環境の準備は整いました。

設定ファイルをいじる

先ほどコピーしたドメイン名の設定ファイルを開き、以下に変更。
後でもう少しいじるのでしばしお付き合いください。

設定ファイル:$sudo vi /etc/nginx/sites-available/hogehoge.com

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再起動忘れずに

しつこいですが、再起動を忘れずに。

$sudo nginx -t    ←設定ファイルにエラーが無いかチェック
$sudo systemctl reload nginx   ←Nginxリロード!

いよいよインストール!

UbuntuサーバからLet’s EncryptでSSL/TLS証明書を”申請””するには「certbot」というクライアントを使います。なのでインストール

$sudo apt -y install certbot  
$certbot --version  ←インストール出来たか確認
certbot 0.23.1

certbotコマンド実行

少しオプションが複雑ですが以下を実行して下さい。
もちろんhogehoge.comはご自身のドメインに書き換えてくださいね。

sudo certbot certonly --webroot -w /var/www/letsencrypt -d hogehoge.com

実行すると以下を質問されます。
・メールアドレス → 適当にご自身のアドレスを入れてください
・Agree? → 「A」
・Yes/No? → 「Y」

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 
-------------------------------------------------------------------------------  
(A)gree/(C)ancel: A  

-------------------------------------------------------------------------------  
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.  
------------------------------------------------------------------------------- 
 (Y)es/(N)o: Y  

Obtaining a new certificate  
... (略)...  
IMPORTANT NOTES:  - 
Congratulations! Your certificate and chain have been saved at:  
... (略)... 

最後のメッセージの「Congratulations!」を必ず確認してください。

ラスト!

Nginx の設定ファイルに、 SSL/TLS 関連の設定を追加します。
基本黒字の場所は変更しなくて良いはずです。赤字のみ。

$sudo vi /etc/nginx/sites-available/hogehoge.com
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;
}

くどいようですが、再起動(笑)

$sudo nginx -t   ←設定ファイルにエラーが無いかチェック 
$sudo systemctl reload nginx   ←Nginxリロード!

SSLでアクセス!

ブラウザから https://hgehoge.com にアクセス

以上です!以外と簡単ですね!

まとめ

無料ってすばらしい!
そして複雑な設定や認証キーのやり取りが不要!

愛のおひねり




育毛剤

関連記事

  1. Pythonでscrapy

    PythonでScrapyインストール時にエラー発生。解決!

  2. djangologo

    ‘bootstrap4’ is not …

  3. macでポート開放する簡単な方法

  4. ubuntu

    クーロン設定方法と記載方法かんたん紹介

  5. vimでペースト・貼り付けたら余計なインデントが混ざる(解決)

    vimでペースト・貼り付けたら余計なインデントが混ざる(解決)

  6. PyCharm をアップデートしたら日本語化が出来ない!解決!

おすすめ記事

  1. iPhoneやiPadで誤ってアプリケーションを購入した場合の返金方法

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

自然の中でホッと一息、、チャンネル登録お願いします

京都の自然や祭り、社寺仏閣の風景を撮影してお届けしています。仕事の一息にご覧頂ければうれしいです。


愛のおひねり

子供の頃、ファミコンより「MSX」に飛びついたマイノリティー。

当時、雑誌に掲載されていたソース(BASIC言語)を打ち込み無料でゲームを楽しみ悦に浸る。

某大手電機メーカーの情報システム部門勤務を経て独立。

現在はIT広告媒体全般を請け負う便利屋。

趣味:
ビリヤード、フルート、カラオケ、Amazonプライムビデオ観賞