GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu 20.04 で Let's Encrypt を使用して Nginx を保護する方法

この記事では、Ubuntu 20.04 LTS で暗号化して Nginx を保護するために必要な手順について説明しました。このチュートリアルを続行する前に、sudo を持つユーザーとしてログインしていることを確認してください 特権。このチュートリアルのすべてのコマンドは、root 以外のユーザーとして実行する必要があります。

Let’s Encrypt は、無料の SSL 証明書を提供する Internet Security Research Group (ISRG) によって開発された、無料で自動化されたオープンな認証局です。 Let’s Encrypt は、証明書の作成、検証、署名、実装、証明書の更新のプロセスを自動化するクライアント ソフトウェア (certbot) を使用します。

前提条件:

  • Ubuntu 20.04 を搭載したオペレーティング システム
  • スーパーユーザー権限を持つサーバー IPv4 アドレス (ルート アクセス)
  • Linux デスクトップ用 Gnome ターミナル
  • Windows または macOS 用の PuTTy SSH クライアント
  • Windows 10/11 用 Powershell
  • APT コマンドに精通している

Ubuntu 20.04 で Let's Encrypt を使用して Nginx を保護する

ステップ 1. まず、Ubuntu サーバーにパッケージのインストールを開始する前に、すべてのシステム パッケージが更新されていることを確認することを常にお勧めします。

sudo apt update
sudo apt upgrade

注:インストールする前に、Let’s Encrypt SSL ドメインに適切にアクセスし、Nginx 仮想ホストを使用する必要があります。 Ubuntu に Nginx をインストールする方法に関するチュートリアルをお読みください。

ステップ 2. Certbot をインストールします。

Certbot は、Let's Encrypt SSL 証明書の取得と更新、および証明書を使用するための Web サーバーの構成のタスクを自動化する、完全な機能を備えた使いやすいツールです。 .インストールするには、次のコマンドを実行します:

sudo apt install certbot

その後、次のコマンドを入力して、2048 ビット DH パラメータの新しいセットを生成します:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Let’s Encrypt サーバーは、一時ファイルに対して HTTP 要求を行い、要求されたドメインが certbot が実行されているサーバーに解決されることを確認します。もっと簡単にするために、すべての HTTP リクエストを .well-known/acme-challenge にマップします /var/lib/letsencrypt という 1 つのディレクトリに :

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp www-data /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

次に、すべての Nginx サーバー ブロック ファイルに含まれる次の 2 つのスニペットを作成します。

sudo nano /etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}

次に、2 番目のスニペット ssl.conf: を作成します

sudo nano /etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

次に、ドメイン サーバー ブロック ファイルを開き、letsencrypt.conf: を含めます

sudo nano /etc/nginx/sites-available/example.com.conf
server {
  listen 80;
  server_name example.com www.example.com;

  include snippets/letsencrypt.conf;
}

ファイルからサイト対応ディレクトリへのシンボリック リンクを作成することを忘れないでください:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx

完了したら、webroot プラグインを使用して Certbot を実行し、以下を発行して SSL 証明書ファイルを取得します。

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

最後に、ドメイン サーバー ブロックを次のように編集します。

sudo nano /etc/nginx/sites-available/example.com.conf
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;
}

変更を有効にするためにNginxサービスをリロードします:

sudo systemctl reload nginx

ステップ 3. 証明書のステータスを確認します。

クラウド セキュリティ会社 Qualys の SSL サーバー テストを使用して、Certbot が SSL 証明書を正しく作成したことを確認できます。 your-domain.com を置き換えて、お好みの Web ブラウザで次のリンクを開きます ベース ドメイン:

https://www.ssllabs.com/ssltest/analyze.html?d=your-domain.com

ステップ 4. Let's Encrypt SSL 証明書を更新する

最後に、自動更新をテストします:

sudo certbot renew --dry-run

Ubuntu 20.04 Focal Fossa に Nginx で SSL Let's Encrypt をインストールするために必要な作業はこれだけです。この簡単なヒントがお役に立てば幸いです。質問や提案がある場合は、下にコメントを残してください。


Ubuntu
  1. Ubuntu18.04でLet'sEncryptを使用してNginxを保護する-その方法は?

  2. Ubuntu20.04でLetsencryptを使用してNginxを保護する方法

  3. Ubuntu18.04にNginxでElggをインストールする方法

  1. Ubuntu 20.04/18.04でLetsEncryptを使用してNginxを保護する方法

  2. Ubuntu18.04でLetsEncryptを使用してNginxを保護する

  3. Ubuntu20.04でLet'sEncryptを使用してNginxを保護する方法

  1. Ubuntu16.04でLetsEncryptを使用してNginxを保護する

  2. Ubuntu20.04でLetsEncryptを使用してNginxを保護する

  3. CentOS8でLetsEncryptを使用してNginxを保護する