Ubuntu20.04でLet’sEncryptを使用してNginxをセットアップする方法

NGINX Webサーバーで安全な通信(つまりHTTPS)を有効にするには、信頼できる認証局からSSL / TLS証明書を取得する必要があります。 暗号化しましょう は、無料のSSL / TLS証明書を提供する非営利の認証局です。

このチュートリアルでは、Let’sEncryptで発行された無料のSSL / TLS証明書を設定する方法について説明します。 Ubuntu 20.04 実行中のLTSサーバー Nginx

前提条件:

  • NginxとホストされたWebサイトがインストールされたUbuntu20.04サーバー

UbuntuにCertbotをインストールする

Certbot は、Let’sEncryptから証明書を取得および更新するプロセスを簡素化および自動化するオープンソースツールです。 Snapデプロイメントシステムを使用してCertbotをインストールします。 SnapはUbuntu20.04にプリインストールされています。

更新がスナップされました

次のコマンドを実行して、snapdを更新します。

$ sudo snap install core

$ sudo snap refresh core

certbotsnapをインストールします

次に、Certbotスナップをインストールする準備ができました。

ノート: 以前に標準のaptコマンドを使用してCertbotをインストールしたことがある場合は、最初に次のコマンドを実行して削除します。 これにより、Certbotスナップが正しく機能するようになります。

$ sudo apt-get remove certbot

$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed

certbotコマンドを有効にする

Certbotスナップを正常にインストールしたら、次のコマンドを実行して有効にします certbot 使用するため。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

証明書を取得する

以下のコマンドを実行すると、certbotが残りのプロセスをガイドします。 Certbotは、HTTPSをアクティブ化するためにNGINX構成も自動的に更新します。

$ sudo certbot --nginx

以下は、certbotがこのプロセス中に実行するように求めるプロンプトの概要です。

  1. 更新とセキュリティの通知が送信される電子メールアドレスを提供します
  2. Enter Y 利用規約に同意する
  3. Enter Y また n Certbotの開発者とあなたのメールアドレスを共有することを受け入れるか拒否する
  4. HTTPSを有効にするドメイン名を確認します

出力:

デバッグログを/var/log/letsencrypt/letsencrypt.logに保存する選択したプラグイン:Authenticator nginx、Installer nginx
Enter 電子メールアドレス(緊急の更新およびセキュリティ通知に使用)(Enter キャンセルする場合は「c」):[email protected] —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —利用規約(https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf)をお読みください。 ACMEサーバーに登録するには、同意する必要があります。 同意しますか? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (はい・いいえ: y —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —————- Let’s Encryptプロジェクトの創設パートナーであり、Certbotを開発している非営利団体であるElectronic Frontier Foundationとあなたのメールアドレスを共有するために、正常に発行されましたか? Webの暗号化作業、EFFニュース、キャンペーン、およびデジタルの自由をサポートする方法について、メールでお知らせします。 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (はい・いいえ: nアカウントが登録されました。 HTTPSをアクティブ化する名前はどれですか? —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- —- 1:domain1.com 2:www.domain1 。 /またはスペース、または入力を空白のままにして、表示されているすべてのオプションを選択します(Enter キャンセルする場合は「c」):domain1.comおよびwww.domain1.comの証明書を要求します。次のチャレンジを実行します。domain1.comのhttp-01チャレンジhttp-01www.domain1.comのチャレンジ検証を待機しています…クリーニング課題の増加VirtualHostへの証明書のデプロイ/ etc / nginx / sites-enabled / domain1仮想ホストへの証明書のデプロイ/ etc / nginx / sites-enabled / domain1ポート80のすべてのトラフィックを/ etc / nginx / sites-enabled / domain1のsslにリダイレクトするリダイレクトポート80から/ etc / nginx / sites-enabled / domain1のsslへのすべてのトラフィック- – – – – – – – おめでとう! これで、https://domain1.comとhttps://www.domain1.comが正常に有効になりました。 —- —- —- —- —-重要な注意事項:-おめでとうございます! 証明書とチェーンは次の場所に保存されています:/etc/letsencrypt/live/domain1.com/fullchain.pemキーファイルは次の場所に保存されています:/etc/letsencrypt/live/domain1.com/privkey.pem証明書の有効期限は2021-04-10。 将来、この証明書の新しいバージョンまたは微調整されたバージョンを取得するには、「certonly」オプションを指定してcertbotを再度実行するだけです。 *すべての*証明書を非対話的に更新するには、「certbotrenew」を実行します-Certbotが気に入った場合は、ISRGへの寄付/ Let’s Encrypt:https://letsencrypt.org/donate EFFへの寄付: https://eff.org/donate-le

Cerbotは、nginxブロックファイルに次のエントリ(Certbotによって管理されていることを示す文)を追加します。

/ etc / nginx / sites-enabled / domain1

$ cat /etc/nginx/sites-enabled/domain1
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {

server_name domain1.com www.domain1.com;

root /var/www/domain1.com;
index index.html;

location / {
try_files $uri $uri/ =404;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = www.domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

if ($host = domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
listen [::]:80;

server_name domain1.com www.domain1.com;
return 404; # managed by Certbot
}
$

Webサイトを参照して、ロックアイコンが表示されていることを確認します。

証明書の更新プロセス

Let’sEncryptによって発行された証明書は90日間有効です。 インストール中に、certbotはスケジュールされたタスクを作成して、証明書の有効期限が切れる前に証明書を自動的に更新します。 Webサーバーの構成を変更しない限り、certbotを再度実行する必要はありません。

次のコマンドを実行して、自動更新プロセスをテストします。

$ sudo certbot renew --dry-run

結論

このガイドでは、Ubuntu20.04で実行されているNGINXWebサーバーでSSL証明書を暗号化する方法を学習しました。

Cerbotの代わりに、 ACME Let’sEncryptから無料の証明書を自動的に発行および更新するシェルスクリプト。

不明な点がある場合は、下のコメントセクションでお知らせください。