SSL 証明書を使用した名前ベースの仮想ホスティングを使用してスタンドアロン Apache サーバーをセットアップする方法 - パート 4
LFCE (Linux Foundation Certified Engineer の略) は、Linux システムでのネットワーク サービスのインストール、管理、トラブルシューティングに関する専門知識を備えた訓練を受けた専門家であり、次のことを担当します。システム アーキテクチャの設計、実装、および継続的なメンテナンス。
この記事では、Web コンテンツを提供するように Apache を構成する方法と、自己署名証明書を含む名前ベースの仮想ホストと SSL をセットアップする方法を説明します。
Linux Foundation 認定プログラム (LFCE) の紹介。
注: この記事は Apache に関する包括的なガイドではなく、LFCE< 向けのこのトピックに関する自習の出発点であることを目的としています。 試験。そのため、このチュートリアルでも Apache を使用した負荷分散については説明しません。
同じタスクを実行する他の方法をすでに知っているかもしれませんが、Linux Foundation 認定が厳密にパフォーマンスベースであることを考慮すると、 それは問題ありません。したがって、「仕事をやり遂げる」限り、試験に合格する可能性は十分にあります。
要件
Apache のインストールと起動の手順については、現在のシリーズのパート 1 (「ネットワーク サービスのインストールと起動時の自動起動の構成」) を参照してください。
これまでに、Apache Web サーバーがインストールされ、実行されているはずです。これは次のコマンドで確認できます。
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 を使用したスタンドアロン サーバーでのページの提供
Apache の最も基本的な使用法は、仮想ホストがまだ構成されていないスタンドアロン サーバーで Web ページを提供することです。 DocumentRoot ディレクティブは、Apache が Web ページ ドキュメントを提供するディレクトリを指定します。
デフォルトでは、すべてのリクエストはこのディレクトリから取得されますが、シンボリック リンクやエイリアスを使用して他の場所を指すこともできることに注意してください。
エイリアス ディレクティブ (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 (Not Found) 応答が返されます。
さらに、失敗したイベントはエラー ログに記録されます。
アクセス ログ の形式は、メイン設定ファイルの LogFormat ディレクティブを使用してニーズに応じてカスタマイズできますが、エラー ログでは同じことはできません。 。
アクセス ログのデフォルトの形式は次のとおりです。
LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]
ここで、パーセント記号の前にある各文字は、サーバーが特定の情報をログに記録することを示します。
- String
説明
- %h
リモートのホスト名または IP アドレス
- %l
リモート ログ名
- %u
リクエストが認証された場合のリモート ユーザー
- %t
リクエストを受信した日時
- %r
サーバーへのリクエストの最初の行
- %>s
リクエストの最終ステータス
- %b
応答のサイズ [バイト]
ニックネーム は、設定文字列全体を再度入力することなく、他のログをカスタマイズするために使用できるオプションのエイリアスです。
さらなるオプションについては、Apache ドキュメントの LogFormat ディレクティブ [カスタム ログ形式セクション] を参照してください。
どちらのログ ファイル (アクセス と エラー) も、Apache サーバーで何が起こっているかを一目ですばやく分析するための優れたリソースとなります。言うまでもなく、これらはシステム管理者が問題のトラブルシューティングに使用する最初のツールです。
最後に、もう 1 つの重要なディレクティブは Listen です。これは、指定されたポートまたはアドレスとポートの組み合わせで受信リクエストを受け入れるようにサーバーに指示します。
ポート番号のみが定義されている場合、Apache はすべてのネットワーク インターフェイスで指定されたポートをリッスンします (ワイルドカード記号 * は、「すべてのネットワーク インターフェイス」を示すために使用されます)。
IP アドレスとポートの両方が指定されている場合、Apache は指定されたポートとネットワーク インターフェイスの組み合わせをリッスンします。
(以下の例でわかるように) 複数の Listen ディレクティブを同時に使用して、リッスンする複数のアドレスとポートを指定できることに注意してください。このオプションは、リストされているアドレスおよびポートのいずれかからの要求に応答するようにサーバーに指示します。
名前ベースの仮想ホストのセットアップ
仮想ホストの概念は、同じ物理マシンによってサービスを提供される個々のサイト (またはドメイン) を定義します。実際には、単一の「本物」サーバーから複数のサイト/ドメインを仮想ホストとして提供できます。このプロセスはエンド ユーザーには透過的であり、エンド ユーザーにとっては、異なるサイトが個別の Web サーバーによってサービスを提供されているように見えます。
名前ベースの仮想ホスティングにより、サーバーはクライアントに依存して、HTTP ヘッダーの一部としてホスト名を報告できます。したがって、この技術を使用すると、多くの異なるホストが同じ IP アドレスを共有できます。
各仮想ホストは、DocumentRoot 内のディレクトリで構成されます。この例では、テスト設定に次のダミー ドメインを使用します。それぞれは対応するディレクトリにあります。
- ilovelinux.com – /var/www/html/ilovelinux.com/public_html
- linuxrocks.org – /var/www/html/linuxrocks.org/public_html
ページが正しく表示されるように、各仮想ホストのディレクトリを 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
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
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/[サイト名].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
上記のオプションの簡単な説明:
- req -X509 は、x509 証明書を作成していることを示します。
- -nodes (NO DES) は「キーを暗号化しない」を意味します。
- -day 365 は、証明書が有効な日数です。
- -newkey rsa:2048 は 2048 ビット RSA キーを作成します。
- -keyout /etc/httpd/ssl-certs/apache.key は、RSA キーの絶対パスです。
- -out /etc/httpd/ssl-certs/apache.crt は、証明書の絶対パスです。
ステップ 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 と名前ベース の仮想ホスティングを設定してデータ送信を保護する方法を説明しました。何らかの理由で問題が発生した場合は、以下のコメント フォームを使用してお気軽にお知らせください。セットアップを成功させるお手伝いをさせていただきます。
こちらもお読みください
- Apache IP ベースおよび名前ベースの仮想ホスティング
- 仮想ホストの有効化/無効化オプションを使用した Apache 仮想ホストの作成
- 「Apache GUI」ツールを使用して「Apache Webサーバー」を監視する