GNU/Linux >> Linux の 問題 >  >> Debian

Debian11のNginxにLet'sEncryptSSLをインストールする方法

Let’s Encryptは、Webサイトに無料のSSL証明書を提供する認証局です。ただし、SSL証明書を提供するだけではありません。また、証明書の作成、検証、署名、実装、および証明書の更新を自動化します。

Let’s Encryptは、2億5000万を超えるWebサイトで使用されている、世界最大の認証局です。すべてのウェブサイトが安全でHTTPSを使用することを目的として、2014年11月に開始されました。

現在、Let’s Encryptは、Apache、Nginx、Plex、およびHaproxyへの証明書の自動インストールをサポートしています。

ここでは、Debian11にNginx用のLet'sEncryptSSL証明書をインストールする方法を説明します。

前提条件

先に進む前に、システムにNginxWebサーバーのインストールを設定することをお勧めします。

読む: Debian11にLEMPスタックをインストールする方法

仮想ホストの作成

まず、HTTPバージョンのWebサイトを提供するためにNginx仮想ホストを作成する必要があります。

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Webサイトには以下の構成を使用してください。要件に基づいて値を変更することを忘れないでください。

WordPress、JoomlaなどのCMS、またはPHPベースのアプリケーションを使用していない場合は、PHPFastCGIセクションを削除できます。

server {
   server_name itzgeek.net www.itzgeek.net;
   root /usr/share/nginx/www.itzgeek.net/;

   location / {
       index index.html index.htm index.php;
   }

   access_log /var/log/nginx/www.itzgeek.net.access.log;
   error_log /var/log/nginx/www.itzgeek.net.error.log;

   location ~ \.php$ {
      include fastcgi_params;
      fastcgi_intercept_errors on;
      fastcgi_pass unix:/run/php/php7.4-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

仮想ホスト構成ファイルを作成したら、Webサイトのファイルを保持するルートディレクトリを作成します。

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/

次に、ディレクトリの所有権とグループを変更します。

sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/

最後に、テストHTMLファイルをドメインのドキュメントルートに配置します。

echo "This is a test site @ www.itzgeek.net" | sudo tee /usr/share/nginx/www.itzgeek.net/index.html

次に、構成を再読み込みするためにNginxサービスを再起動する必要があります。

sudo systemctl restart nginx

DNSレコードの作成/更新

ドメインのLet’s Encrypt SSL証明書を生成するには、ドメインがサーバーIPを指すようにする必要があります。そのため、ドメインレジストラに移動して、ドメインのA/CNAMEレコードを作成します。たとえば、次の画像は、ドメインwww.itzgeek.netのA/CNAMEレコードを示しています。

DNSレコードの変更は、伝播するのに時間がかかります。したがって、DNSレコードに設定したTTLに応じて、数分から数時間待ちます。

NginxのSSL証明書を暗号化してインストール

Certbotのインストール

ドメインをサーバーIPにポイントすることに加えて、システムにCertbotACMEクライアントをインストールする必要もあります。 Certbotクライアントは、証明書の発行とインストールをダウンタイムなしで処理します。

Certbotは、Debianオペレーティングシステムのスナップパッケージとして利用できるようになりました。したがって、最初にSnapdパッケージをインストールします。

sudo apt update

sudo apt install -y snapd

次に、スナップを最新バージョンに更新します。

sudo snap install core; sudo snap refresh core

最後に、snapコマンドを使用してCertbotクライアントをインストールします。

sudo snap install --classic certbot

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

Let'sEncrypt証明書をインストールする

certbotコマンドを使用して、Let’s Encrypt証明書を作成し、証明書を使用するようにNginxを構成します。

sudo certbot --nginx

インタラクティブなプロンプトに従い、証明書をインストールします。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): [email protected] << Enter Email ID

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y  << Agree to Terms and Conditions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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 our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N << Subscriber to Newsletter
Account registered.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: itzgeek.net
2. www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1,2 << Choose Site to Install Let's Encrypt SSL Certificate
Requesting a certificate for www.itzgeek.net

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/www.itzgeek.net/privkey.pem
This certificate expires on 2022-01-17.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for www.itzgeek.net to /etc/nginx/conf.d/www.itzgeek.net.conf
Congratulations! You have successfully enabled HTTPS on https://www.itzgeek.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ドメインに対してHTTPSをアクティブ化すると、Certbotクライアントは、トラフィックをHTTPからHTTPSサイトにリダイレクトするために必要な書き換えルールを配置します。

私の場合、以下のリダイレクトに対して2つのルールが設定されています。

  1. http://itzgeek.net>> https://itzgeek.net
  2. http://www.itzgeek.net>> https://www.itzgeek.net

ご覧のとおり、最初のリダイレクトはwwwHTTPSバージョンのWebサイトには到達していません。そのため、以下のセクションに従って設定する必要がある場合があります。

www以外のHTTPリクエストをNginxを使用してwwwHTTPSにリダイレクトする(オプション)

www以外のHTTPサイトからWWWHTTPSサイト( http://itzgeek.net )にトラフィックをリダイレクトするようにNginxサーバーを構成することをお勧めします。>> https://www.itzgeek.net

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

強調表示されたリダイレクトをSSLセクションに追加します。

    listen 443 ssl; # managed by Certbot
 .    .    .
 .    .    .
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    if ($host = itzgeek.net) {
        return 301 https://www.itzgeek.net$request_uri;
    }

次に、Nginxサービスを再起動します。

sudo systemctl restart nginx

Let'sEncrypt証明書を確認する

Let’s Encryptの証明書は、Webサイトにアクセスして確認できます。

http:// your-http-web-site

または

https:// your-https-web-site

今すぐサイトのHTTPSバージョンを入手する必要があります。

SSL証明書のテスト

以下のURLにアクセスして、Let’sEncryptSSL証明書の問題とそのセキュリティ評価をテストします。

https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net

Let'sEncrypt証明書を更新する

Let's Encryptの証明書の有効期間は90日です。証明書の有効期限が切れる前に、証明書を更新することを強くお勧めします。 1日に2回実行され、期限切れが近づいている証明書を自動的に更新するsystemdサービスに感謝します。

ただし、以下のコマンドを実行して、証明書の自動更新をシミュレートすることをお勧めします。

sudo certbot renew --dry-run

出力:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/www.itzgeek.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for www.itzgeek.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded: 
  /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

更新が正しく機能していることが出力で確認された場合、自動更新は期待どおりに行われます。

結論

それで全部です。 Debian11にNginx用のLet’sEncryptSSL証明書をインストールする方法を学んだことを願っています。コメントセクションでフィードバックを共有してください。


Debian
  1. Debian9にNginxをインストールする方法

  2. Nginxを使用してUbuntu18.04にLet'sEncryptSSLをインストールする方法

  3. Debian9にMicroweberをインストールする方法

  1. RockyLinux8にNGINX用のLet'sEncryptSSLをインストールする方法

  2. Drupal 9をNginxでインストールし、Debian10でSSLを暗号化する方法

  3. Debian11にNginxをインストールする方法

  1. セットアップ方法Debian10/Debian9でNginxを使用してSSL証明書を暗号化しましょう

  2. Apacheを使用してWordPressをインストールし、Debian11でSSLを暗号化する方法

  3. Debian11のApacheにLet'sEncryptSSLをインストールする方法