CentOS Stream 9でApacheとNginxにSSL/TLSを設定:Certbotでわずか5分

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

ブラウザに「安全ではない」と警告されないために

顧客があなたのウェブサイトにアクセスした際、目に飛び込んでくるのが「保護されていない通信」という赤い警告文字だったとしたら、どうなるか想像してみてください。統計によると、70%以上のユーザーはこの警告を見ると即座にサイトを離脱します。現在、GoogleもHTTPS化されたページを優先しており、Chromeのトラフィックの95%以上がHTTPSです。そのため、SSL/TLSはもはや「あれば良いもの」ではなく、SEOの順位低下を防ぐために必須の標準規格となっています。

かつて、CentOS 7でのSSL証明書のインストールは非常に手間のかかる作業でした。認証局(CA)から証明書を購入し、間違いやすい .crt や .key ファイルを手動で設定する必要がありました。しかし、CentOS Stream 9では、Let’s EncryptとCertbotのおかげですべてが変わりました。現在、ウェブサイトを保護する「鍵マーク」の取得は完全に無料で、わずか5分ほどの作業で完了します。

理解しておくべき3つの核心概念

コマンドを入力し始める前に、使用するコンポーネントについて簡単におさらいしましょう。

  • SSL/TLS: ブラウザとサーバー間の通信を暗号化するプロトコルです。実際にはTLSはSSLのアップグレード版ですが、一般的には慣れ親しまれた「SSL」という言葉がよく使われます。
  • Let’s Encrypt: すべての主要なブラウザに信頼されている、無料のデジタル証明書を提供する非営利の認証局です。
  • Certbot: 証明書の取得と自動更新を行うためのコマンドラインツール(CLI)です。ApacheやNginxの設定ファイルを自動的に修正してくれる、有能なアシスタントのような存在です。

CentOS Stream 9での環境準備

インストールをスムーズに進めるために、CentOS Stream 9が動作しているVPSを用意してください.ドメインがサーバーのIPアドレスを指していること、およびroot権限があることを確認してください。

まず、Certbotは公式リポジトリに含まれていないため、DNFパッケージマネージャーを使用してEPEL(Extra Packages for Enterprise Linux)リポジトリを有効にする必要があります。

sudo dnf install epel-release -y
sudo dnf update -y

初心者が陥りやすい典型的なミスは、ファイアウォールのポート開放を忘れることです。ポート80と443がブロックされていると、Certbotはドメインの所有権を確認できません。

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Apache (httpd) へのSSL導入

すでにApache HTTP Serverを使用している場合、Certbotには専用のプラグインがあります。これはVirtual Hostファイルを自動的にスキャンし、SSL設定を適切な場所に挿入してくれます。

1. CertbotとApacheプラグインのインストール

sudo dnf install certbot python3-certbot-apache -y

2. 証明書発行コマンドの実行

以下のコマンドで自動設定を開始します。証明書の期限が近づいた際に通知を受け取るためのメールアドレスを入力するだけでOKです。

sudo certbot --apache

実行中、Certbotは設定済みのドメインリストを表示します。該当する番号を選択するか、Enterを押してすべてを選択します。HTTPからHTTPSへのリダイレクト(Redirect)について聞かれたら、Yes(通常は2番)を選択することをお勧めします。これにより、すべてのアクセスが自動的に暗号化されます。

NginxへのSSL導入

Nginxの場合も、手順は同様にシンプルです。CentOS Stream 9上のCertbotプラグインは非常に安定しており、既存の設定を壊すことなく動作します。

1. CertbotとNginxプラグインのインストール

sudo dnf install certbot python3-certbot-nginx -y

2. Certbotを実行して証明書を取得

sudo certbot --nginx

CertbotはNginxの設定ファイル内から server_name の行を自動的に探し出します。もし認識されない場合は、/etc/nginx/conf.d/ 内の設定ファイルでドメインが正しく宣言されているか確認してください。

ヒント:パフォーマンス最適化のために設定ファイルを手動で調整したい場合は、certonly コマンドを使用してください。

sudo certbot certonly --nginx

自動更新メカニズム (Auto-renewal)

Let’s Encryptの証明書の有効期限は90日間だけです。これは忘れっぽい人にとってはデメリットかもしれません。以前、私のクライアントのサイトが、お正月の三が日に証明書の期限が切れて「ダウン」してしまったことがありました。証明書の更新忘れを完全に防ぐための備えがあれば、このような悲劇は防げたはずです。

幸いなことに、DNFを通じてCertbotをインストールすると、システムは自動的に systemd timer

Share: