SSL証明書を使用した名前ベースの仮想ホスティングでスタンドアロンApacheサーバーをセットアップする方法-パート4


LFCE Linux Foundation Certified Engineer の略)は、Linuxシステムでのネットワークサービスのインストール、管理、トラブルシューティングの専門知識を持ち、担当する訓練を受けた専門家です。システムアーキテクチャの設計、実装、および継続的なメンテナンス。

この記事では、Webコンテンツを提供するようにApacheを構成する方法と、自己署名証明書を含む名前ベースの仮想ホストとSSLをセットアップする方法を示します。

Linux Foundation認定プログラム(LFCE)の紹介。

注:この記事は、Apacheに関する包括的なガイドではなく、 LFCE 試験のこのトピックに関する自習の出発点となることを目的としています。そのため、このチュートリアルでもApacheを使用した負荷分散については説明していません。

Linux Foundation認定が厳密にパフォーマンスベースであることを考えると、同じタスクを実行する他の方法をすでに知っているかもしれません。これは OK です。したがって、「仕事を終わらせる」限り、試験に合格する可能性は十分にあります。

Apacheのインストールと起動の手順については、現在のシリーズのパート1 (「ネットワークサービスのインストールと起動時の自動起動の構成」)を参照してください。

これで、ApacheWebサーバーがインストールされて実行されているはずです。これは、次のコマンドで確認できます。

# ps -ef | grep -Ei '(apache|httpd)' | grep -v grep

注:上記のコマンドは、実行中のプロセスのリストに apache または httpd (Webデーモンの最も一般的な名前)が存在するかどうかを確認します。 Apacheが実行されている場合、次のような出力が得られます。

Apacheのインストールをテストし、実行されているかどうかを確認する究極の方法は、Webブラウザーを起動し、サーバーのIPを指すことです。次の画面、または少なくともApacheが機能していることを確認するメッセージが表示されます。

Apacheの設定

Apacheのメイン構成ファイルは、ディストリビューションに応じて異なるディレクトリに配置できます。

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

幸いなことに、構成ディレクティブはApacheプロジェクトのWebサイトに非常によく文書化されています。この記事では、それらのいくつかを参照します。

Apacheの最も基本的な使用法は、仮想ホストがまだ構成されていないスタンドアロンサーバーでWebページを提供することです。 DocumentRoot ディレクティブは、ApacheがWebページドキュメントを提供するディレクトリを指定します。

デフォルトでは、すべてのリクエストはこのディレクトリから取得されますが、シンボリックリンクを使用したり、エイリアスを使用して他の場所を指すこともできます。

Alias ディレクティブ( DocumentRoot で指定されたディレクトリではなくローカルファイルシステムにドキュメントを保存できるようにする)と一致しない限り、サーバーは要求されたURLからのパスを追加しますドキュメントへのパスを作成するには、ドキュメントルートに移動します。

たとえば、次の DocumentRoot があるとします。

Webブラウザが[サーバーIP またはホスト名] /lfce/tecmint.html を指すと、サーバーは/var /を開きます。 www/html/lfce/tecmint.html (そのようなファイルが存在すると仮定)、 200 OK )応答でイベントをアクセスログに保存します。

アクセスログは通常、/var/log 内の access.log access_log などの代表的な名前で見つかります。このログ(およびエラーログ)は、サブディレクトリ(たとえば、CentOSの/var/log/httpd )内にある場合もあります。それ以外の場合、失敗したイベントは引き続きアクセスログに記録されますが、 404 (見つかりません)の応答が返されます。

さらに、失敗したイベントはエラーログに記録されます。

アクセスログの形式は、メイン構成ファイルの LogFormat ディレクティブを使用して必要に応じてカスタマイズできますが、エラーログでは同じことはできません。

アクセスログのデフォルトの形式は次のとおりです。

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

パーセント記号が前に付いている各文字は、サーバーが特定の情報をログに記録することを示しています。

ニックネームはオプションのエイリアスであり、構成文字列全体を再度入力しなくても、他のログをカスタマイズするために使用できます。

その他のオプションについては、Apacheドキュメントの LogFormat ディレクティブ[カスタムログフォーマットセクション]を参照してください。

どちらのログファイル(アクセスエラー)も、Apacheサーバーで何が起こっているかを一目ですばやく分析するための優れたリソースです。言うまでもなく、これらはシステム管理者が問題のトラブルシューティングに使用する最初のツールです。

最後に、もう1つの重要なディレクティブは Listen です。これは、指定されたポートまたはアドレス/ポートの組み合わせで着信要求を受け入れるようにサーバーに指示します。

ポート番号のみが定義されている場合、apacheはすべてのネットワークインターフェイスで指定されたポートをリッスンします(ワイルドカード記号*は「すべてのネットワークインターフェイス」を示すために使用されます)。

IPアドレスとポートの両方が指定されている場合、apacheは指定されたポートとネットワークインターフェイスの組み合わせをリッスンします。

(以下の例でわかるように)複数のListenディレクティブを同時に使用して、リッスンする複数のアドレスとポートを指定できることに注意してください。このオプションは、リストされたアドレスとポートのいずれかからの要求に応答するようにサーバーに指示します。

名前ベースの仮想ホストの設定

仮想ホストの概念は、同じ物理マシンによって提供される個々のサイト(またはドメイン)を定義します。実際には、複数のサイト/ドメインを単一の「実際の」サーバーから仮想ホストとして提供できます。このプロセスはエンドユーザーに対して透過的であり、エンドユーザーにはさまざまなサイトが個別のWebサーバーによって提供されているように見えます。

名前ベースの仮想ホスティングにより、サーバーはクライアントに依存して、HTTPヘッダーの一部としてホスト名を報告できます。したがって、この手法を使用すると、多くの異なるホストが同じIPアドレスを共有できます。

各仮想ホストは、 DocumentRoot 内のディレクトリに構成されます。この場合、テストのセットアップに次のダミードメインを使用します。各ドメインは、対応するディレクトリにあります。

  1. ilovelinux.com – /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org – /var/www/html/linuxrocks.org/public_html

ページが正しく表示されるように、各VirtualHostのディレクトリを 755 chmod します。

# chmod -R 755 /var/www/html/ilovelinux.com/public_html
# chmod -R 755 /var/www/html/linuxrocks.org/public_html

次に、各 public_html ディレクトリ内にサンプルの index.html ファイルを作成します。

<html>
  <head>
    <title>www.ilovelinux.com</title>
  </head>
  <body>
    <h1>This is the main page of www.ilovelinux.com</h1>
  </body>
</html>

最後に、 CentOS openSUSE で、 /etc/httpd/conf/httpd.conf または /の下部に次のセクションを追加します。それぞれetc/apache2/httpd.conf を使用するか、すでに存在する場合は変更します。

<VirtualHost *:80>
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html/ilovelinux.com/public_html
     ServerName www.ilovelinux.com
     ServerAlias www.ilovelinux.com ilovelinux.com
     ErrorLog /var/www/html/ilovelinux.com/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html/linuxrocks.org/public_html
     ServerName www.linuxrocks.org
     ServerAlias www.linuxrocks.org linuxrocks.org
     ErrorLog /var/www/html/linuxrocks.org/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

/etc/httpd/conf.d ディレクトリ内の個別のファイルに各仮想ホスト定義を追加することもできることに注意してください。そうすることを選択した場合、各構成ファイルには次のような名前を付ける必要があります。

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

つまり、サイト名またはドメイン名に .conf を追加する必要があります。

Ubuntu では、個々の構成ファイルの名前は/etc/apache2/sites-available/[site name] .conf です。次に、次のように、 a2ensite または a2dissite コマンドを使用して各サイトを有効または無効にします。

# a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
# a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
# a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
# a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

a2ensite および a2dissite コマンドは、仮想ホスト構成ファイルへのリンクを作成し、それらを/etc/apache2/sites-enabled ディレクトリ。

別のLinuxボックスから両方のサイトを参照できるようにするには、そのマシンの/etc/hosts ファイルに次の行を追加して、それらのドメインへのリクエストを特定のIPにリダイレクトする必要があります。住所。

[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

セキュリティ対策として、SELinuxはApacheがデフォルトの/ var/log/httpd以外のディレクトリにログを書き込むことを許可しません。

SELinuxを無効にするか、適切なセキュリティコンテキストを設定することができます。

# chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

ここで、xxxxxxは、仮想ホストを定義した/ var/www/html内のディレクトリです。

Apacheを再起動すると、上記のアドレスに次のページが表示されます。

Apacheを使用したSSLのインストールと構成

最後に、Apacheで使用する自己署名証明書を作成してインストールします。この種のセットアップは、プライベートLANなどの小規模な環境で受け入れられます。

ただし、サーバーがインターネットを介してコンテンツを外部に公開する場合は、その信頼性を裏付けるために、サードパーティによって署名された証明書をインストールする必要があります。いずれにせよ、証明書を使用すると、サイトとの間、またはサイト内で送信される情報を暗号化できます。

CentOS および openSUSE では、 mod_ssl パッケージをインストールする必要があります。

# yum update && yum install mod_ssl 		[On CentOS]
# zypper refresh && zypper install mod_ssl	[On openSUSE]

一方、 Ubuntu では、ApacheのSSLモジュールを有効にする必要があります。

# a2enmod ssl

次の手順は CentOS テストサーバーを使用して説明されていますが、セットアップは他のディストリビューションでもほぼ同じである必要があります(何らかの問題が発生した場合は、コメントを使用して質問を残すことを躊躇しないでください)形)。

ステップ1 [オプション] :証明書を保存するディレクトリを作成します。

# mkdir /etc/httpd/ssl-certs

ステップ2 :自己署名証明書とそれを保護するキーを生成します。

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

上記のオプションの簡単な説明:

  1. req -X509 indicates we are creating a x509 certificate.
  2. -nodes (NO DES) means “don’t encrypt the key”.
  3. -days 365 is the number of days the certificate will be valid for.
  4. -newkey rsa:2048 creates a 2048-bit RSA key.
  5. -keyout /etc/httpd/ssl-certs/apache.key is the absolute path of the RSA key.
  6. -out /etc/httpd/ssl-certs/apache.crt is the absolute path of the certificate.

ステップ3 :選択した仮想ホスト構成ファイル(または前に説明したように /etc/httpd/conf/httpd.conf の対応するセクション)を開き、次の行をに追加します。ポート 443 でリッスンしている仮想ホスト宣言。

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

追加する必要があることに注意してください。

NameVirtualHost *:443

上部、真下

NameVirtualHost *:80

どちらのディレクティブも、すべてのネットワークインターフェースのポート 443 80 でリッスンするようにapacheに指示します。

次の例は、 /etc/httpd/conf/httpd.conf から抜粋したものです。

次に、Apacheを再起動します。

# service apache2 restart 			[sysvinit and upstart based systems]
# systemctl restart httpd.service 		[systemd-based systems]

そして、ブラウザで https://www.ilovelinux.com を指定します。次の画面が表示されます。

先に進み、「リスクを理解しています」と「例外を追加」をクリックします。

最後に、「この例外を永続的に保存する」にチェックを入れ、「セキュリティ例外を確認する」をクリックします。

また、 https を使用してホームページにリダイレクトされます。

概要

この投稿では、データ転送を保護するために、 SSL を使用して Apache および名前ベースの仮想ホスティングを構成する方法を示しました。何らかの理由で問題が発生した場合は、以下のコメントフォームを使用してお知らせください。セットアップを成功させるお手伝いをさせていただきます。

関連項目

  1. Apache IP Based and Name Based Virtual Hosting
  2. Creating Apache Virtual Hosts with Enable/Disable Vhosts Options
  3. Monitor “Apache Web Server” Using “Apache GUI” Tool

全著作権所有。 © Linux-Console.net • 2019-2022