常にセキュリティの脅威に満ちているオンラインの世界では、Webサーバーのセキュリティ保護を最優先する必要があります。 Webサーバーを保護する方法の1つは、SSL/TLS証明書を使用してサイトにHTTPSプロトコルを実装することです。 SSL / TLS証明書は、ウェブサーバーとユーザーのブラウザ間で交換される情報を暗号化することでサイトを保護するだけでなく、Googleのランキングにも役立ちます。
このガイドでは、RHEL8でLet’s Encrypt SSL / TLSを使用してApache(http)Webサーバーを保護する方法を学習します。
前提条件
続行する前に必要なものは次のとおりです。
- sudoユーザーが構成されたRHEL8サーバーのインスタンス。
- サーバーのパブリックIPアドレスを指す完全修飾ドメイン名(FQDN)。このガイドでは、ドメイン名linuxtechgeek.infoを使用します。
ステップ1)RHEL8にApacheをインストールする
最初のステップは、ApacheWebサーバーをインストールすることです。 ApacheはすでにRedHatのAppStreamリポジトリに存在するため、次のようにDNFパッケージマネージャーを使用してインストールできます。
$ sudo dnf install -y httpd
インストールしたら、Apache Webサーバーを起動し、起動時に起動できるようにします。
$ sudo systemctl start httpd $ sudo systemctl enable httpd
Apacheが実行されていることを確認するには、次のコマンドを実行します。
$ sudo systemctl status httpd
注:ファイアウォールが実行されている場合は、ファイアウォールで次のApacheポートを許可し、実行します
$ sudo firewall-cmd --add-port=80/tcp --permanent $ sudo firewall-cmd --add-port=443/tcp –permanent $ sudo firewall-cmd --realod
これで、Webブラウザーにアクセスして、URLバーでドメインを参照できます。
ステップ2)Certbotをインストールする
Certbotは、EFF(Electronic Frontier Foundation)によって管理されている使いやすいオープンソースクライアントです。 Lets EncryptからTLS証明書を取得し、Webサーバーに展開します。そうすることで、TLS証明書を使用してHTTPSプロトコルを実装する煩わしさを解消します。
Certbotおよび関連するパッケージをインストールするには、最初にEPEL(Enterprise Linux用の追加パッケージ)を有効にします。
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
次に、次のようにcertbotとmod_sslパッケージをインストールします。
$ sudo dnf install certbot python3-certbot-apache mod_ssl
ステップ3)Apache仮想ホストファイルを作成します
仮想ホストを使用すると、単一のWebサーバーで複数のドメインをホストできます。
最初のステップは、すべてのWebサイトファイルが入るドキュメントルート内にディレクトリを作成することです。
$ sudo mkdir -p /var/www/linuxtechgeek.info/html
ディレクトリの所有権をApacheユーザーに設定します。
$ sudo chown -R apache:apache /var/www/linuxtechgeek.info/html
図のようにディレクトリのアクセス許可を設定してください。
$ sudo chmod -R 755 /var/www
ドメインのディレクトリにすべての所有権と権限を設定したら、/ etc / httpd /conf.d/ディレクトリに仮想ホストファイルを作成します。
$ sudo vi /etc/httpd/conf.d/linuxtechgeek.info.conf
次の行を貼り付けて、独自のドメイン名を使用するように注意してください。
<virtualhost *:80> ServerName linuxtechgeek.info ServerAlias www.linuxtechgeek.info DocumentRoot /var/www/linuxtechgeek.info/html ErrorLog /var/log/httpd/linuxtechgeek.info-error.log CustomLog /var/log/httpd/linuxtechgeek.info-access.log combined </virtualhost>
仮想ホストファイルを保存して終了します。
仮想ホストが機能しているかどうかをテストするために、WebサイトディレクトリにサンプルHTMLファイルを作成します。
$ sudo vi /var/www/linuxtechgeek.info/html/index.html
次のサンプルコンテンツを貼り付けます。お好みに合わせて自由に変更してください。
<!DOCTYPE html> <html> <body> <h1> Welcome to Linuxtechi virtualhost </h1> </body> </html>
HTMLファイルを保存して終了します。行ったすべての変更を保存するには、ApacheWebサーバーを再起動します。
$ sudo systemctl restart httpd
ここで、ドメインをもう一度参照します。今回は、デフォルトのApacheウェルカムページの代わりに、構成したばかりのカスタムHTMLページが表示されます。これは、仮想ホストファイルが機能していることの証明です。
ステップ4)Let’sEncrypt証明書でApacheを保護する
最後のステップは、Let’sEncrypt証明書を取得して展開することです。これを行うには、次のコマンドを実行するだけです。
$ sudo certbot --apache
コマンドが実行されると、certbotは一連のプロンプトを案内します。メールアドレスの入力を求められ、利用規約に同意する必要があります。また、EFFニュースに関する定期的なメール、およびデジタルの自由に関するキャンペーンを受信するかどうかを尋ねられます。
HTTPSを有効にする名前についてプロンプトが表示されたら、Enterキーを押して、提供されているすべてのドメインに証明書を適用します。
Certbotは、Let’s EncryptからTLS証明書を取得し、Webサーバーに実装します。次に、Certbotは、証明書とキーが保存されているパスと、ドメインの証明書の展開パスを出力します。
Let's Encryptが正常にデプロイされたことを確認するには、ブラウザを更新してください。今回は、URLバーの先頭に、サイトが正常に暗号化されたことを示す南京錠のアイコンが表示されます。
詳細については、南京錠のアイコンをクリックしてください
さらに、SSLラボでSSLテストを実行して、証明書をデジタルで検証できます。すべてがうまくいけば、Aグレードを取得する必要があります。
ステップ5)証明書の更新を暗号化しましょう
Let’sEncrypt証明書は90日間のみ有効です。有効期限の数週間前に、通常、EFFから、証明書の有効期限が迫っていることと、証明書を更新する必要があることについての通知が届きます。
次のコマンドを実行して、証明書を手動で更新できます。
$ sudo certbot renew
証明書の更新をシミュレートするには、次のコマンドを実行します。
$ sudo certbot renew --dry-run
これは実際の証明書の更新を模倣するだけであり、アクションは実行されません。
証明書の更新を自動化するには、crontabファイルを開きます
$ crontab -e
毎晩深夜に実行されるcronジョブを以下に指定してください。
0 0 * * * / usr / bin / certbot renew> / dev / null 2>&1
結論
Let’sEncrypt証明書をRHELにシームレスにデプロイしてApacheWebサーバーを保護できるようになることを願っています。
また読む :LinuxでNGINXWebサーバーを強化および保護する方法