開発者ドキュメント

CentOS7でLet’sEncryptを使用してNginxを保護する方法

序章

Let’s Encrypt is a new Certificate Authority (CA) that provides a way to obtain and install free TLS/SSL certificates, thereby enabling encrypted HTTPS on web servers. It streamlines the process by providing a software client, Certbot, that attempts to automate most (if not all) of the required steps. 現在、証明書の取得とインストールのプロセス全体は、ApacheとNginxの両方のWebサーバーで完全に自動化されています。

このチュートリアルでは、の使用方法を説明します。 certbot クライアントを暗号化して無料のSSL証明書を取得し、CentOS7のNginxで使用してみましょう。 また、SSL証明書を自動的に更新する方法についても説明します。

前提条件

このチュートリアルに従う前に、いくつかのことが必要になります。

すべての前提条件が整ったら、Let’sEncryptクライアントソフトウェアのインストールに進みましょう。

ステップ1— CertbotLet’sEncryptクライアントのインストール

Let’s Encryptを使用してSSL証明書を取得するための最初のステップは、 certbot サーバー上のソフトウェア。 現在、これをインストールする最良の方法は、EPELリポジトリを使用することです。

次のように入力して、サーバー上のEPELリポジトリへのアクセスを有効にします。

  1. sudo yum install epel-release

リポジトリを有効にすると、 certbot-nginx 次のように入力してパッケージ化します。

  1. sudo yum install certbot-nginx

The certbot Let’s Encryptクライアントがインストールされ、使用できるようになりました。

ステップ2—Nginxを設定する

Nginxをまだインストールしていない場合は、今すぐインストールできます。 EPELリポジトリは前のセクションですでに有効になっているはずなので、次のように入力してNginxをインストールできます。

  1. sudo yum install nginx

次に、を使用してNginxを起動します systemctl:

  1. sudo systemctl start nginx

CertbotはNginxのSSLを自動的に構成できますが、正しいものを見つけることができる必要があります server 設定でブロックします。 それは探してこれを行います server_name 証明書を要求しているドメインに一致するディレクティブ。 If you’re starting out with a fresh Nginx install, you can update the default config file using vi or your favorite text editor:

  1. sudo vi /etc/nginx/nginx.conf

既存のものを探す server_name ライン:

/etc/nginx/nginx.conf
server_name _;

交換してください _ ドメイン名にアンダースコアを付けます。

/etc/nginx/nginx.conf
server_name example.com www.example.com;

ファイルを保存して、エディターを終了します。 If you are using vi, enter :x, then y when prompted, to save and quit. 次のコマンドを使用して、構成編集の構文を確認します。

  1. sudo nginx -t

それがエラーなしで実行される場合は、Nginxをリロードして新しい構成をロードします。

  1. sudo systemctl reload nginx

Certbotは正しいものを見つけることができるようになります server ブロックして更新します。 次に、HTTPSトラフィックを許可するようにファイアウォールを更新します。

ステップ3—ファイアウォールを更新する

ファイアウォールを有効にしている場合は、ポート80と443が着信トラフィックに対して開いていることを確認してください。 ファイアウォールを実行していない場合は、先にスキップできます。

Firewalld ファイアウォールを実行している場合は、次のように入力してこれらのポートを開くことができます。

  1. sudo firewall-cmd --add-service=http
  2. sudo firewall-cmd --add-service=https
  3. sudo firewall-cmd --runtime-to-permanent

iptables ファイアウォールを実行している場合、実行する必要のあるコマンドは、現在のルールセットに大きく依存します。 For an initial rule set, you can add HTTP and HTTPS access by typing:

  1. sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  2. sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

これで、Certbotを実行して証明書を取得する準備が整いました。

ステップ4—証明書を取得する

Certbotは、さまざまなプラグインを介してSSL証明書を取得するためのさまざまな方法を提供します。 Nginxプラグインは、Nginxの再構成と、必要に応じて構成の再読み込みを処理します。

  1. sudo certbot --nginx -d example.com -d www.example.com

これは実行されます certbot とともに --nginx プラグイン、使用 -d 証明書を有効にする名前を指定します。

初めてのランニングの場合 certbot、メールアドレスを入力して利用規約に同意するよう求められます。 そうした後、 certbot will communicate with the Let’s Encrypt server, then run a challenge to verify that you control the domain you’re requesting a certificate for. 構成が更新され、Nginxがリロードして新しい設定を取得します。 certbot プロセスが成功し、証明書が保存されている場所を通知するメッセージで締めくくられます。

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your certificate will expire on 2022-10-20. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - 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

証明書がダウンロード、インストール、およびロードされます。 を使用してWebサイトをリロードしてみてください https:// ブラウザのセキュリティインジケータに注目してください。 これは、サイトが適切に保護されていることを表す必要があり、通常は緑色の鍵のアイコンが付いています。

Step 5 — Setting Up Auto Renewal

Let’s Encryptの証明書は、90日間のみ有効です。 これは、ユーザーが証明書の更新プロセスを自動化することを奨励するためです。 定期的に実行するコマンドを設定して、期限切れの証明書を確認し、それらを自動的に更新する必要があります。

毎日更新チェックを実行するには、 cron、定期的なジョブを実行するための標準的なシステムサービス。 教えて cron と呼ばれるファイルを開いて編集することによって何をすべきか crontab.

  1. sudo crontab -e

テキストエディタは、この時点で空のテキストファイルであるデフォルトのcrontabを開きます。 次の行に貼り付けて、保存して閉じます。

crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet

The 15 3 * * * この行の一部は、「毎日午前3時15分に次のコマンドを実行する」ことを意味します。 いつでも選択できます。

The renew Certbotのコマンドは、システムにインストールされているすべての証明書をチェックし、30日以内に期限切れになるように設定されている証明書を更新します。 --quiet 情報を出力したり、ユーザー入力を待機したりしないようにCertbotに指示します。

cron このコマンドを毎日実行します。 インストールされているすべての証明書は、有効期限が切れる30日以内になると、自動的に更新および再ロードされます。

cronジョブを作成およびスケジュールする方法の詳細については、VPSガイドでCronを使用してタスクを自動化する方法を確認してください。

結論

このチュートリアルでは、Let’sEncryptクライアントをインストールしました certbot、ドメインのSSL証明書をダウンロードし、これらの証明書を使用するようにNginxを構成し、証明書の自動更新を設定しました。 Certbotの使用についてさらに質問がある場合は、それらのドキュメントから始めることをお勧めします。

モバイルバージョンを終了