序章
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証明書を自動的に更新する方法についても説明します。
前提条件
このチュートリアルに従う前に、いくつかのことが必要になります。
- root以外のユーザーがいるCentOS7サーバー
sudo
特権。 このようなユーザーアカウントを設定する方法については、 CentOS 7チュートリアルのサーバーの初期設定の手順1〜3を参照してください。 - 証明書を使用する登録済みドメイン名を所有または管理する必要があります。 まだドメイン名を登録していない場合は、そこにある多くのドメイン名レジストラの1つに登録できます(例: Namecheap、GoDaddyなど)。
- ドメインがサーバーのパブリックIPアドレスを指すDNSARecord。 これが必要なのは、Let’s Encryptが、証明書を発行しているドメインを所有していることを検証する方法のためです。 たとえば、次の証明書を取得する場合
example.com
、検証プロセスが機能するには、そのドメインがサーバーに解決される必要があります。 この設定では、ドメイン名としてexample.comとwww.example.comを使用するため、両方のDNSレコードが必要です。
すべての前提条件が整ったら、Let’sEncryptクライアントソフトウェアのインストールに進みましょう。
ステップ1— CertbotLet’sEncryptクライアントのインストール
Let’s Encryptを使用してSSL証明書を取得するための最初のステップは、 certbot
サーバー上のソフトウェア。 現在、これをインストールする最良の方法は、EPELリポジトリを使用することです。
次のように入力して、サーバー上のEPELリポジトリへのアクセスを有効にします。
- sudo yum install epel-release
リポジトリを有効にすると、 certbot-nginx
次のように入力してパッケージ化します。
- sudo yum install certbot-nginx
The certbot
Let’s Encryptクライアントがインストールされ、使用できるようになりました。
ステップ2—Nginxを設定する
Nginxをまだインストールしていない場合は、今すぐインストールできます。 EPELリポジトリは前のセクションですでに有効になっているはずなので、次のように入力してNginxをインストールできます。
- sudo yum install nginx
次に、を使用してNginxを起動します systemctl
:
- 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:
- sudo vi /etc/nginx/nginx.conf
既存のものを探す server_name
ライン:
server_name _;
交換してください _
ドメイン名にアンダースコアを付けます。
server_name example.com www.example.com;
ファイルを保存して、エディターを終了します。 If you are using vi
, enter :x
, then y
when prompted, to save and quit. 次のコマンドを使用して、構成編集の構文を確認します。
- sudo nginx -t
それがエラーなしで実行される場合は、Nginxをリロードして新しい構成をロードします。
- sudo systemctl reload nginx
Certbotは正しいものを見つけることができるようになります server
ブロックして更新します。 次に、HTTPSトラフィックを許可するようにファイアウォールを更新します。
ステップ3—ファイアウォールを更新する
ファイアウォールを有効にしている場合は、ポート80と443が着信トラフィックに対して開いていることを確認してください。 ファイアウォールを実行していない場合は、先にスキップできます。
Firewalld ファイアウォールを実行している場合は、次のように入力してこれらのポートを開くことができます。
- sudo firewall-cmd --add-service=http
- sudo firewall-cmd --add-service=https
- sudo firewall-cmd --runtime-to-permanent
iptables ファイアウォールを実行している場合、実行する必要のあるコマンドは、現在のルールセットに大きく依存します。 For an initial rule set, you can add HTTP and HTTPS access by typing:
- sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
- sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
これで、Certbotを実行して証明書を取得する準備が整いました。
ステップ4—証明書を取得する
Certbotは、さまざまなプラグインを介してSSL証明書を取得するためのさまざまな方法を提供します。 Nginxプラグインは、Nginxの再構成と、必要に応じて構成の再読み込みを処理します。
- 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
プロセスが成功し、証明書が保存されている場所を通知するメッセージで締めくくられます。
OutputIMPORTANT 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
.
- sudo crontab -e
テキストエディタは、この時点で空のテキストファイルであるデフォルトの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の使用についてさらに質問がある場合は、それらのドキュメントから始めることをお勧めします。