第18章 Web サーバー
HTTP
(Hypertext Transfer Protocol)サーバーまたは Web サーバー は、Web 経由でクライアントにコンテンツを提供するネットワークサービスです。これは通常 Web ページを指しますが、他のドキュメントも当てはまります。
- Apache HTTP サーバー
- nginx
18.1. Apache HTTP サーバー
httpd
サービスの基本設定について説明し、サーバーモジュールの追加、仮想ホストの設定、セキュアな HTTP サーバーの設定など、高度なトピックを説明します。
httpd
サービス設定を更新する必要があります。本セクションでは、新たに追加された機能の一部、重要な変更の概要、古い設定ファイルの更新について説明します。
18.1.1. 新機能
18.1.2. 主な変更点
httpd
サービス設定にいくつかの変更が加えられました。
18.1.3. 設定の更新
- モジュールは変更されている可能性があるため、すべてのモジュール名が正しいことを確認してください。名前が変更された各モジュールの
LoadModule
ディレクティブを調整します。 - サードパーティーのモジュールは、読み込みを試みる前にすべて再コンパイルをします。これは一般的に認証と権限付与のモジュールに該当します。
- Apache HTTP Secure Server を使用する場合は、Secure Sockets Layer (SSL) プロトコルの有効化に関する重要な情報について 「mod_ssl モジュールの有効化」 を参照してください。
~]# service httpd configtest
Syntax OK
18.1.4. httpd サービスの実行
httpd
サービスを使用するには、httpd がインストールされていることを確認してください。これを行うには、次のコマンドを使用します。
~]# yum install httpd
18.1.4.1. サービスの起動
httpd
サービスを実行する場合は、root
で次のコマンドを実行します。
~]# service httpd start
Starting httpd: [ OK ]
~]# chkconfig httpd on
18.1.4.2. サービスの停止
httpd
サービスを停止するには、root
で次のコマンドを実行します。
~]# service httpd stop
Stopping httpd: [ OK ]
~]# chkconfig httpd off
18.1.4.3. サービスの再起動
httpd
サービスを再起動する方法は、3 通りあります。
- サービスを完全に再起動するには、
root
で次のコマンドを実行します。~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
これにより、稼働中のhttpd
サービスが停止し、すぐに再起動します。このコマンドは、PHP など、動的に読み込んだモジュールをインストールまたは削除した後に使用します。 - 設定のリロードだけを行うには、
root
で以下を入力します。~]# service httpd reload
これにより、実行中のhttpd
サービスが設定ファイルを再読み込みします。現在処理中のリクエストはすべて割り込みされるため、クライアントのブラウザーはエラーメッセージを表示したり、ページの一部をレンダリングしたりする可能性があります。 - アクティブなリクエストに影響を与えずに設定を再読み込みするには、
root
で次のコマンドを実行します。~]# service httpd graceful
これにより、実行中のhttpd
サービスが設定ファイルを再読み込みします。現在処理されているリクエストでは、古い設定が使用されます。
18.1.4.4. サービスステータスの確認
httpd
サービスが実行していることを確認するには、シェルプロンプトで以下を入力します。
~]# service httpd status
httpd (pid 19014) is running...
18.1.5. 設定ファイルの編集
httpd
サービスが起動すると、デフォルトでは、表18.1「httpd サービスの設定ファイル」 に記載されている場所から設定が読み込まれます。
パス | 説明 |
---|---|
/etc/httpd/conf/httpd.conf | 主要設定ファイル。 |
/etc/httpd/conf.d/ | 主要設定ファイル内に含まれている設定ファイル用の補助ディレクトリー。 |
httpd
サービスを再起動する方法は、「サービスの再起動」 を参照してください。
~]# service httpd configtest
Syntax OK
18.1.5.1. 一般的な httpd.conf ディレクティブ
/etc/httpd/conf/httpd.conf
設定ファイルで使用されます。
-
<Directory>
- <
;Directory>
; ディレクティブを使用すると、特定のディレクティブを特定のディレクトリーにのみ適用できます。以下の形式を取ります。<Directory directory> directive … </Directory>
ディレクトリー は、ローカルファイルシステム内の既存のディレクトリーへの完全パスまたはワイルドカード式のいずれかになります。このディレクティブは、ScriptAlias
で指定されたディレクトリー外にあるサーバー側のスクリプトに追加のcgi-bin
ディレクトリーを設定するために使用できます。この場合、ExecCGI
ディレクティブおよびAddHandler
ディレクティブを指定し、ターゲットディレクトリーのパーミッションを正しく設定する必要があります(つまり0755
)。例18.1 <Directory> ディレクティブの使用
<Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
-
<IfDefine>
IfDefine
ディレクティブでは、特定のパラメーターがコマンドラインに提供されている場合に限り、特定のディレクティブを使用できます。以下の形式を取ります。<IfDefine [!]parameter> directive … </IfDefine>
パラメーター は、-D
パラメーター コマンドラインオプション(例: httpd -DEnableHome)を使用してシェルプロンプトに指定できます。オプションの感嘆符(つまり!
)が存在する場合、囲まれたディレクティブはパラメーターが指定されて いない 場合にのみ使用されます。例18.2 <IfDefine> ディレクティブの使用
<IfDefine EnableHome> UserDir public_html </IfDefine>
-
<IfModule>
- <
;IfModule>
ディレクティブを使用すると、特定のモジュールがロードされる場合にのみ特定のディレクティブを使用できます。以下の形式を取ります。<IfModule [!]module> directive … </IfModule>
モジュール は名前またはファイル名で識別できます。オプションの感嘆符(つまり!
)が存在する場合は、モジュールがロードされて いない 場合にのみ囲まれたディレクティブが使用されます。例18.3 <IfModule> ディレクティブの使用
<IfModule mod_disk_cache.c> CacheEnable disk / CacheRoot /var/cache/mod_proxy </IfModule>
-
<location>
- <
;Location>
; ディレクティブを使用すると、特定のディレクティブを特定の URL のみに適用できます。以下の形式を取ります。<Location url> directive … </Location>
url は、DocumentRoot
ディレクティブ(/server-info
など)で指定されたディレクトリーに対する相対パス、またはhttp://example.com/server-info
などの外部 URL のいずれかになります。例18.4 <Location> ディレクティブの使用
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from .example.com </Location>
-
<Proxy>
- <
;Proxy>
; ディレクティブを使用すると、特定のディレクティブをプロキシーサーバーにのみ適用できます。以下の形式を取ります。<Proxy pattern> directive … </Proxy>
パターン は外部 URL またはワイルドカード式(http://example.com/*
など)にすることができます。例18.5 <Proxy> ディレクティブの使用
<Proxy *> Order deny,allow Deny from all Allow from .example.com </Proxy>
-
<VirtualHost>
- <
;VirtualHost>
ディレクティブを使用すると、特定のディレクティブを特定の仮想ホストにのみ適用できます。以下の形式を取ります。<VirtualHost address[:port]…> directive … </VirtualHost>
アドレス は、表18.2「利用可能な <VirtualHost> オプション」 に記載されているように、IP アドレス、完全修飾ドメイン名、または特別な形式になります。表18.2 利用可能な <VirtualHost> オプション オプション 説明 *
すべての IP アドレスを表します。 _default_
一致しない IP アドレスを表します。 例18.6 <VirtualHost> ディレクティブの使用
<VirtualHost *:80> ServerAdmin webmaster@penguin.example.com DocumentRoot /www/docs/penguin.example.com ServerName penguin.example.com ErrorLog logs/penguin.example.com-error_log CustomLog logs/penguin.example.com-access_log common </VirtualHost>
-
AccessFileName
AccessFileName
ディレクティブを使用すると、各ディレクトリーのアクセス制御情報をカスタマイズするために使用するファイルを指定できます。以下の形式を取ります。AccessFileName filename…
ファイル 名 は、要求されたディレクトリーで検索するファイルの名前です。デフォルトでは、サーバーは.htaccess
を検索します。セキュリティー上の理由から、ディレクティブの後にFiles
タグを付け、.ht
で始まるファイルが Web クライアントによってアクセスされないようにします。これには、.htaccess
および.htpasswd
ファイルが含まれます。例18.7 AccessFileName ディレクティブの使用
AccessFileName .htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files>
-
アクション
Action
ディレクティブにより、特定のメディアタイプが要求されるときに実行される CGI スクリプトを指定できます。以下の形式を取ります。Action content-type path
content-type は、text/html
、image/png
、application/pdf
などの有効な MIME タイプである必要があります。パス は既存の CGI スクリプトを参照し、DocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/cgi-bin/process-image.cgi
)。例18.8 Action ディレクティブの使用
Action image/png /cgi-bin/process-image.cgi
-
AddDescription
AddDescription
ディレクティブを使用すると、指定のファイルについてのサーバー生成ディレクトリー一覧に表示する簡単な説明を指定できます。以下の形式を取ります。AddDescription "description" filename…
この 説明 は、二重引用符(つまり"
)で囲まれた短いテキストである必要があります。ファイル名 に は、完全なファイル名、ファイル拡張子、またはワイルドカード式を使用できます。例18.9 AddDescription ディレクティブの使用
AddDescription "GZIP compressed tar archive" .tgz
-
AddEncoding
AddEncoding
ディレクティブを使用すると、特定のファイル拡張子のエンコーディングタイプを指定できます。以下の形式を取ります。AddEncoding encoding extension…
エンコーディング は、x-compress
、x-gzip
などの有効な MIME エンコーディングである必要があります。拡張機能 は大文字と小文字を区別するファイル拡張子で、従来は先頭のドット(.gz
など)で記述されます。このディレクティブは通常、ダウンロード時に特定のファイルタイプを圧縮解除するように Web ブラウザーに指示するために使用されます。例18.10 AddEncoding ディレクティブの使用
AddEncoding x-gzip .gz .tgz
-
AddHandler
AddHandler
ディレクティブを使用すると、特定のファイル拡張子を選択したハンドラーにマップできます。以下の形式を取ります。AddHandler handler extension…
ハンドラー は、以前に定義したハンドラーの名前である必要があります。拡張機能 は大文字と小文字を区別するファイル拡張子で、従来は先頭のドット(.cgi
など)で記述されます。このディレクティブは通常、.cgi
拡張子を持つファイルを CGI スクリプトとして処理するために使用されます。さらに、これは一般的に、サーバー解析された HTML および image-map ファイルを処理するためにも使用されます。例18.11 AddHandler オプションの使用
AddHandler cgi-script .cgi
-
AddIcon
AddIcon
ディレクティブを使用すると、サーバー生成ディレクトリーの一覧の特定ファイルに表示されるアイコンを指定できます。以下の形式を取ります。AddIcon path pattern…
パス は既存のアイコンファイルを参照し、DocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/icons/folder.png
)。パターン は、ファイル名、ファイル拡張子、ワイルドカード式、または以下の表に記載されている特別な形式になります。表18.3 利用可能な AddIcon オプション オプション 説明 ^^DIRECTORY^^
ディレクトリーを表します。 ^^BLANKICON^^
空の行を表します。 例18.12 AddIcon ディレクティブの使用
AddIcon /icons/text.png .txt README
-
AddIconByEncoding
AddIconByEncoding
ディレクティブを使用すると、サーバー生成ディレクトリー一覧で特定のエンコーディングタイプに対して表示されるアイコンを指定できます。以下の形式を取ります。AddIconByEncoding path encoding…
パス は既存のアイコンファイルを参照し、DocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/icons/compressed.png
)。エンコーディング は、x-compress
、x-gzip
などの有効な MIME エンコーディングである必要があります。例18.13 AddIconByEncoding ディレクティブの使用
AddIconByEncoding /icons/compressed.png x-compress x-gzip
-
AddIconByType
AddIconByType
ディレクティブを使用すると、サーバー生成ディレクトリー一覧の特定のメディアタイプについて表示されるアイコンを指定できます。以下の形式を取ります。AddIconByType path content-type…
パス は既存のアイコンファイルを参照し、DocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/icons/text.png
)。content-type は、有効な MIME タイプ(例:text/html
またはimage/png
)か、text/*
、image/* などのワイルドカード式のいずれかである必要があります。例18.14 AddIconByType ディレクティブの使用
AddIconByType /icons/video.png video/*
-
AddLanguage
AddLanguage
ディレクティブを使用すると、ファイル拡張子を特定の言語に関連付けることができます。以下の形式を取ります。AddLanguage language extension…
言語 は、cs
、en
、fr
などの有効な MIME 言語である必要があります。拡張機能 は大文字と小文字を区別するファイル拡張子で、従来は先頭のドット(.cs
など)で記述されます。このディレクティブは、クライアントの言語設定に基づいて複数の言語でコンテンツを提供する Web サーバーに特に便利です。例18.15 AddLanguage ディレクティブの使用
AddLanguage cs .cs .cz
-
AddType
AddType
ディレクティブを使用すると、特定のファイル拡張子のメディアタイプを定義または上書きできます。以下の形式を取ります。AddType content-type extension…
content-type は、text/html
、image/png
等の有効な MIME タイプである必要があります。拡張機能 は大文字と小文字を区別するファイル拡張子で、従来は先頭のドット(.cs
など)で記述されます。例18.16 AddType ディレクティブの使用
AddType application/x-gzip .gz .tgz
-
Alias
Alias
ディレクティブを使用すると、DocumentRoot
ディレクティブで指定されたデフォルトディレクトリー外のファイルおよびディレクトリーを参照できます。以下の形式を取ります。Alias url-path real-path
url-path はDocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/images/
)。リアルタイムパス は、ローカルファイルシステム内のファイルまたはディレクトリーへの完全パスです。このディレクティブの後には、通常、ターゲットディレクトリーにアクセスするための追加のパーミッションを持つDirectory
タグが続きます。デフォルトでは、/icons/
エイリアスが作成され、/var/www/icons/
からのアイコンがサーバー生成ディレクトリー一覧に表示されます。例18.17 Alias ディレクティブの使用
Alias /icons/ /var/www/icons/ <Directory "/var/www/icons"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all <Directory>
-
許可
Allow
ディレクティブでは、指定のディレクトリーにアクセスするパーミッションがあるクライアントを指定できます。以下の形式を取ります。Allow from client…
クライアント は、ドメイン名、IP アドレス(フルおよびパーシャルの両方)、ネットワーク/ネットマスク のペア、またはすべてのクライアントのすべて
になります。例18.18 Allow ディレクティブの使用
Allow from 192.168.1.0/255.255.255.0
-
AllowOverride
AllowOverride
ディレクティブを使用すると、.htaccess
ファイルのディレクティブがデフォルト設定を上書きできます。以下の形式を取ります。AllowOverride type…
この タイプ は、表18.4「利用可能な AllowOverride オプション」 で説明されているように、利用可能なグルーピングオプションの 1 つである必要があります。表18.4 利用可能な AllowOverride オプション オプション 説明 すべて
.htaccess
のすべてのディレクティブは、以前の設定を上書きすることができます。なし
.htaccess
のディレクティブは、以前の設定を上書きすることはできません。AuthConfig
AuthName
、AuthType
、またはRequire
などの承認ディレクティブを使用できます。FileInfo
DefaultType
、RequestHeader
、またはRewriteEngine
、およびAction
ディレクティブなどのファイルタイプ、メタデータ、およびmod_rewrite
ディレクティブを使用できます。Indexes
AddDescription
、AddIcon
、またはFancyIndexing
などのディレクトリーインデックスディレクティブの使用を許可します。制限
ホストアクセスディレクティブを許可します。つまり、 Allow
、Deny
、およびOrder
を使用できます。options
[=オプション,…]Options
ディレクティブを使用できます。さらに、このディレクティブを使用して設定できるオプションをカスタマイズするオプションのコンマ区切りリストを指定することもできます。例18.19 AllowOverride ディレクティブの使用
AllowOverride FileInfo AuthConfig Limit
-
BrowserMatch
BrowserMatch
ディレクティブを使用すると、クライアントの Web ブラウザータイプに基づいてサーバーの動作を変更できます。以下の形式を取ります。BrowserMatch pattern variable…
この パターン は、User-Agent HTTP header フィールドに一致する正規表現です。変数 は、header フィールドがパターンと一致する場合に設定される環境変数です。デフォルトでは、このディレクティブは既知の問題のある特定のブラウザーへの接続を拒否するために使用され、これらのアクションで問題が発生することがわかっているブラウザーの keepalives および HTTP ヘッダーのフラッシュを無効にします。例18.20 BrowserMatch ディレクティブの使用
BrowserMatch "Mozilla/2" nokeepalive
-
CacheDefaultExpire
CacheDefaultExpire
オプションでは、有効期限のないドキュメント、または最後の変更日がないドキュメントをキャッシュする期間を設定できます。以下の形式を取ります。CacheDefaultExpire time
時間 は秒単位で指定します。デフォルトのオプションは3600
(1 時間)です。例18.21 CacheDefaultExpire ディレクティブの使用
CacheDefaultExpire 3600
-
CacheDisable
CacheDisable
ディレクティブを使用すると、特定の URL のキャッシュを無効にできます。以下の形式を取ります。CacheDisable path
パス はDocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/files/
)。例18.22 CacheDisable ディレクティブの使用
CacheDisable /temporary
-
CacheEnable
CacheEnable
ディレクティブを使用すると、特定の URL に使用するキャッシュタイプを指定できます。以下の形式を取ります。CacheEnable type url
表18.5「利用可能なキャッシュタイプ」 の説明に従って、タイプ は有効なキャッシュタイプである必要があります。url には、DocumentRoot
ディレクティブ(例:/images/
)で指定されたディレクトリーに対する相対パス、プロトコル(ftp:
// など)、またはhttp://example.com/
などの外部 URL を使用できます。表18.5 利用可能なキャッシュタイプ タイプ 説明 mem
メモリーベースのストレージマネージャー。 disk
ディスクベースのストレージマネージャー。 fd
ファイル記述子キャッシュ。 例18.23 CacheEnable ディレクティブの使用
CacheEnable disk /
-
CacheLastModifiedFactor
CacheLastModifiedFactor
ディレクティブでは、有効期限が指定されていないドキュメントをキャッシュする時間をカスタマイズできますが、最終変更日に関する情報が提供されます。以下の形式を取ります。CacheLastModifiedFactor number
この 数 は、ドキュメントの最終更新以降に渡された時間を掛けて乗算するために使用されます。デフォルトのオプションは0.1
(10 分の 1)です。例18.24 CacheLastModifiedFactor ディレクティブの使用
CacheLastModifiedFactor 0.1
-
CacheMaxExpire
CacheMaxExpire
ディレクティブを使用すると、ドキュメントをキャッシュする最大時間を指定できます。以下の形式を取ります。CacheMaxExpire time
時間 は秒単位で指定します。デフォルトのオプションは86400
(1 日)です。例18.25 CacheMaxExpire ディレクティブの使用
CacheMaxExpire 86400
-
CacheNegotiatedDocs
CacheNegotiatedDocs
ディレクティブを使用すると、コンテンツに基づいてネゴシエートされたドキュメントのキャッシュを有効にできます。以下の形式を取ります。CacheNegotiatedDocs option
この オプション は、表18.6「利用可能な CacheNegotiatedDocs オプション」 の説明に従って、有効なキーワードである必要があります。コンテンツネゴシエートされたドキュメントは時間の経過と共に変化するか、または要求側の入力により変更される可能性があるため、デフォルトのオプションはOff
です。表18.6 利用可能な CacheNegotiatedDocs オプション オプション 説明 オン
コンテンツネゴシエートされたドキュメントのキャッシュを有効にします。 オフ
コンテンツネゴシエートされたドキュメントのキャッシュを無効にします。 例18.26 CacheNegotiatedDocs ディレクティブの使用
CacheNegotiatedDocs On
-
CacheRoot
CacheRoot
ディレクティブを使用すると、キャッシュファイルを保存するディレクトリーを指定できます。以下の形式を取ります。CacheRoot directory
ディレクトリー は、ローカルファイルシステム内の既存のディレクトリーへの完全パスである必要があります。デフォルトのオプションは/var/cache/mod_proxy/
です。例18.27 CacheRoot ディレクティブの使用
CacheRoot /var/cache/mod_proxy
-
CustomLog
CustomLog
ディレクティブを使用すると、ログファイル名とログファイルの形式を指定できます。以下の形式を取ります。CustomLog path format
パス はログファイルを参照し、ServerRoot
ディレクティブ(デフォルトでは/etc/httpd/
)で指定されたディレクトリーに対して相対的である必要があります。形式 は、明示的な形式の文字列、またはLogFormat
ディレクティブを使用して以前に定義したフォーマット名のいずれかである必要があります。例18.28 CustomLog ディレクティブの使用
CustomLog logs/access_log combined
-
DefaultIcon
DefaultIcon
ディレクティブでは、他のアイコンが関連付けられていない場合に、サーバー生成ディレクトリー一覧のファイルに表示されるアイコンを指定できます。以下の形式を取ります。DefaultIcon path
パス は既存のアイコンファイルを参照し、DocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/icons/unknown.png
)。例18.29 DefaultIcon ディレクティブの使用
DefaultIcon /icons/unknown.png
-
DefaultType
DefaultType
ディレクティブでは、適切な MIME タイプをサーバーで判断できない場合に使用するメディアタイプを指定できます。以下の形式を取ります。DefaultType content-type
content-type は、text/html
、image/png
、application/pdf
など、有効な MIME タイプである必要があります。例18.30 DefaultType ディレクティブの使用
DefaultType text/plain
-
拒否
Deny
ディレクティブを使用すると、指定のディレクトリーへのアクセスを拒否しているクライアントを指定できます。以下の形式を取ります。Deny from client…
クライアント は、ドメイン名、IP アドレス(フルおよびパーシャルの両方)、ネットワーク/ネットマスク のペア、またはすべてのクライアントのすべて
になります。例18.31 Deny ディレクティブの使用
Deny from 192.168.1.1
-
DirectoryIndex
DirectoryIndex
ディレクティブでは、ディレクトリーが要求される際にクライアントに提供されるドキュメントを指定できます(つまり、URL が/
文字で終了する場合)。以下の形式を取ります。DirectoryIndex filename…
ファイル 名 は、要求されたディレクトリーで検索するファイルの名前です。デフォルトでは、サーバーはindex.html
とindex.html.var
を検索します。例18.32 DirectoryIndex ディレクティブの使用
DirectoryIndex index.html index.html.var
-
DocumentRoot
DocumentRoot
ディレクティブを使用すると、コンテンツを提供するメインディレクトリーを指定できます。以下の形式を取ります。DocumentRoot directory
ディレクトリー は、ローカルファイルシステム内の既存のディレクトリーへの完全パスである必要があります。デフォルトのオプションは/var/www/html/
です。例18.33 DocumentRoot ディレクティブの使用
DocumentRoot /var/www/html
-
ErrorDocument
ErrorDocument
ディレクティブを使用すると、特定のエラーへの応答として表示するドキュメントまたはメッセージを指定できます。以下の形式を取ります。ErrorDocument error-code action
error-code は403
(Forbidden)、404
(Not Found)、または500
(Internal Server Error)などの有効なコードである必要があります。アクション は、URL(ローカルおよび外部の両方)または二重引用符(つまり"
)で囲まれたメッセージ文字列のいずれかになります。例18.34 ErrorDocument ディレクティブの使用
ErrorDocument 403 "Access Denied" ErrorDocument 404 /404-not_found.html
-
ErrorLog
ErrorLog
ディレクティブを使用すると、サーバーエラーがログに記録されるファイルを指定できます。以下の形式を取ります。ErrorLog path
パス はログファイルを参照し、ServerRoot
ディレクティブ(デフォルトは/etc/httpd/
)で指定されたディレクトリーへの相対パスのいずれかです。デフォルトのオプションはlogs/error_log
です。例18.35 ErrorLog ディレクティブの使用
ErrorLog logs/error_log
-
ExtendedStatus
ExtendedStatus
ディレクティブを使用すると、詳細なサーバーステータス情報を有効にできます。以下の形式を取ります。ExtendedStatus option
この オプション は、表18.7「利用可能な ExtendedStatus オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOff
です。表18.7 利用可能な ExtendedStatus オプション オプション 説明 オン
詳細なサーバーステータスの生成を有効にします。 オフ
詳細なサーバーステータスの生成を無効にします。 例18.36 ExtendedStatus ディレクティブの使用
ExtendedStatus On
-
グループ
Group
ディレクティブを使用すると、httpd
サービスを実行するグループを指定できます。以下の形式を取ります。Group group
この グループ は既存の UNIX グループである必要があります。デフォルトのオプションはapache
です。Group
は <VirtualHost> 内で
はサポートされなくなり、SuexecUserGroup
ディレクティブに置き換えられました。例18.37 Group ディレクティブの使用
Group apache
-
HeaderName
HeaderName
ディレクティブを使用すると、サーバー生成ディレクトリーリストの最初に付加されるファイルを指定できます。以下の形式を取ります。HeaderName filename
ファイル 名 は、要求されたディレクトリーで検索するファイルの名前です。デフォルトでは、サーバーはHEADER.html
を検索します。例18.38 HeaderName ディレクティブの使用
HeaderName HEADER.html
-
HostnameLookups
HostnameLookups
ディレクティブを使用すると、IP アドレスの自動解決を有効にできます。以下の形式を取ります。HostnameLookups option
この オプション は、表18.8「利用可能な HostnameLookups オプション」 の説明に従って、有効なキーワードである必要があります。サーバーのリソースを確保するため、デフォルトのオプションはOff
です。表18.8 利用可能な HostnameLookups オプション オプション 説明 オン
各接続の IP アドレスの解決を有効にして、ホスト名をログに記録できるようにします。ただし、これにより処理のオーバーヘッドが大きくなります。 double
二重の逆引き DNS ルックアップの実行を有効にします。上記のオプションと比較すると、処理のオーバーヘッドがさらに追加されます。 オフ
各接続の IP アドレスの解決を無効にします。 サーバーログファイルにホスト名が必要な場合は、DNS ルックアップを実行する多くのログアナライザーツールのいずれかを効率的に使用できます。例18.39 HostnameLookups ディレクティブの使用
HostnameLookups Off
-
包含
Include
ディレクティブを使用すると、他の設定ファイルを追加できます。以下の形式を取ります。Include filename
ファイル名
には、絶対パス、ServerRoot
ディレクティブで指定されたディレクトリーに対する相対パス、またはワイルドカード式を使用できます。/etc/httpd/conf.d/
ディレクトリーのすべての設定ファイルは、デフォルトでロードされます。例18.40 Include ディレクティブの使用
Include conf.d/*.conf
-
IndexIgnore
IndexIgnore
ディレクティブを使用すると、サーバー生成ディレクトリーの一覧から省略されるファイル名の一覧を指定できます。以下の形式を取ります。IndexIgnore filename…
filename オプションは、完全なファイル名またはワイルドカード式のいずれかです。例18.41 IndexIgnore ディレクティブの使用
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
-
IndexOptions
IndexOptions
ディレクティブを使用すると、サーバー生成ディレクトリー一覧の動作をカスタマイズできます。以下の形式を取ります。IndexOptions option…
この オプション は、表18.9「利用可能なディレクトリー一覧オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはCharset=UTF-8
、FancyIndexing
、HTMLTable
、NameWidth=*
、およびVersionSort
です。表18.9 利用可能なディレクトリー一覧オプション オプション 説明 charset
=encoding生成された Web ページの文字セットを指定します。エンコーディング は、 UTF-8
やISO-8859-2
などの有効な文字セットである必要があります。Type
=content-type生成された Web ページのメディアタイプを指定します。content-type は、 text/html
やtext/plain
などの有効な MIME タイプである必要があります。DescriptionWidth
=valuedescription 列の幅を指定します。値 は、幅を自動的に調整する多数の文字またはアスタリスク( *
)のいずれかになります。FancyIndexing
特定のファイルのさまざまなアイコンや、列ヘッダーをクリックしてディレクトリー一覧を再分類できる高度な機能を有効にします。 FolderFirst
最初にディレクトリーの一覧表示を有効にします。常にディレクトリーにファイルを配置してください。 HTMLTable
ディレクトリーの一覧への HTML テーブルの使用を有効にします。 IconsAreLinks
アイコンをリンクとしての使用を有効にします。 IconHeight
=valueアイコンの高さを指定します。値 は複数のピクセルです。 IconWidth
=valueアイコンの幅を指定します。値 は複数のピクセルです。 IgnoreCase
大文字と小文字を区別する方法でファイルとディレクトリーのソートを有効にします。 IgnoreClient
クライアントからのクエリー変数の受け入れを無効にします。 NameWidth
=valueファイル名列の幅を指定します。値 は、幅を自動的に調整する多数の文字またはアスタリスク( *
)のいずれかになります。ScanHTMLTitles
AddDescription
ディレクティブでファイルが指定されていない場合に、説明(つまりtitle
要素)のファイルの解析を有効にします。ShowForbidden
他のアクセスが制限されているファイルの一覧表示を有効にします。 SuppressColumnSorting
列ヘッダーをクリックして、ディレクトリー一覧の並べ替えを無効にします。 SuppressDescription
ファイルの説明のために領域の確保を無効にします。 SuppressHTMLPreamble
HeaderName
ディレクティブで指定されたファイルが存在する場合に、標準の HTML プリアンブルの使用を無効にします。SuppressIcon
ディレクトリー一覧でアイコンの使用を無効にします。 SuppressLastModified
ディレクトリー一覧の最後の変更フィールドの日付の表示を無効にします。 SuppressRules
ディレクトリー一覧での水平行の使用を無効にします。 SuppressSize
ディレクトリー一覧のファイルサイズフィールドの表示を無効にします。 TrackModified
HTTP ヘッダーの Last-Modified
およびETag
の値の返信を有効にします。VersionSort
期待した方法でバージョン番号が含まれるファイルのソートを有効にします。 XHTML
デフォルトの HTML 3.2 の代わりに XHTML 1.0 の使用を有効にします。 例18.42 IndexOptions ディレクティブの使用
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8
-
KeepAlive
KeepAlive
ディレクティブを使用すると、永続的な接続を有効にできます。以下の形式を取ります。KeepAlive option
この オプション は、表18.10「利用可能な KeepAlive オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOff
です。表18.10 利用可能な KeepAlive オプション オプション 説明 オン
永続的な接続を有効にします。この場合、サーバーは接続ごとに複数のリクエストを受け入れます。 オフ
キープアライブ接続を無効にします。 永続的な接続が有効になっていると、ビジーなサーバーで子プロセスの数がすぐに増大し、最終的に最大限度に達するため、サーバーが大幅に低下することに注意してください。リスクを軽減するには、KeepAliveTimeout
をより小さい値に設定し、/var/log/httpd/logs/error_log
ログファイルを注意して監視することを推奨します。例18.43 KeepAlive ディレクティブの使用
KeepAlive Off
-
KeepAliveTimeout
KeepAliveTimeout
ディレクティブでは、接続を閉じる前に別の要求を待つ時間を指定できます。以下の形式を取ります。KeepAliveTimeout time
時間 は秒単位で指定します。デフォルトのオプションは15
です。例18.44 KeepAliveTimeout ディレクティブの使用
KeepAliveTimeout 15
-
LanguagePriority
LanguagePriority
ディレクティブでは、言語の優先順位をカスタマイズできます。以下の形式を取ります。LanguagePriority language…
言語 は、cs
、en
、fr
などの有効な MIME 言語である必要があります。このディレクティブは、クライアントの言語設定に基づいて複数の言語でコンテンツを提供する Web サーバーに特に便利です。例18.45 LanguagePriority ディレクティブの使用
LanguagePriority sk cs en
-
listen
- Listen ディレクティブでは、リッスンする IP アドレスまたはポートを指定できます。以下の形式を取ります。
Listen [ip-address:]port [protocol]
ip-address はオプションで、指定しない限り、サーバーはすべての IP アドレスからの指定の ポート で着信要求を受け入れます。プロトコル はポート番号から自動的に決定されるため、通常は省略可能です。デフォルトオプションでは、ポート80
をリッスンします。サーバーが 1024 未満のポートをリッスンするように設定されている場合は、スーパーユーザーだけがhttpd
サービスを起動することができることに注意してください。例18.46 Listen ディレクティブの使用
Listen 80
-
LoadModule
LoadModule
ディレクティブを使用すると、DSO( Dynamic Shared Object )モジュールを読み込むことができます。以下の形式を取ります。LoadModule name path
名前 は、必要なモジュールの有効な識別子である必要があります。パス は既存のモジュールファイルを参照し、ライブラリーを配置するディレクトリーに対して相対的である必要があります(32 ビットの場合は/usr/lib/httpd/
、デフォルトでは 64 ビットシステムの場合は/usr/lib/httpd/
)。Apache HTTP Server の DSO サポートの詳細は、「モジュールの使用」 を参照してください。例18.47 LoadModule ディレクティブの使用
LoadModule php5_module modules/libphp5.so
-
LogFormat
- LogFormat ディレクティブでは、ログファイルの形式を指定できます。以下の形式を取ります。
LogFormat format name
形式 は、表18.11「一般的な LogFormat オプション」 で説明されているオプションで構成される文字列です。名前 はCustomLog
ディレクティブの形式文字列の代わりに使用できます。表18.11 一般的な LogFormat オプション オプション 説明 %b
応答のサイズ(バイト単位)を表します。 %h
リモートクライアントの IP アドレスまたはホスト名を表します。 %l
指定されている場合はリモートログ名を表します。そうでない場合は、代わりにハイフン(つまり -
)が使用されます。%r
ブラウザーまたはクライアントから送信される要求文字列の最初の行を表します。 %s
ステータスコードを表します。 %t
リクエストの日付と時間を表します。 %u
認証が必要な場合は、リモートユーザーを表します。そうでない場合は、代わりにハイフン(つまり -
)が使用されます。%{field}
HTTP ヘッダー フィールド の内容を表します。一般的なオプションには、 %{Referer}
(クライアントをサーバーに接続する Web ページの URL)および%{User-Agent}
(リクエストを行う Web ブラウザーのタイプ)が含まれます。例18.48 LogFormat ディレクティブの使用
LogFormat "%h %l %u %t \"%r\" %>s %b" common
-
LogLevel
LogLevel
ディレクティブを使用すると、エラーログの詳細レベルをカスタマイズできます。以下の形式を取ります。LogLevel option
この オプション は、表18.12「利用可能な logLevel オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはwarn
です。表18.12 利用可能な logLevel オプション オプション 説明 emerg
サーバーが作業を実行できない場合、緊急の状況のみがログに記録されます。 alert
即時アクションが必要なときのすべての状況がログに記録される。 crit
重大な状態はすべてログに記録されます。 error
すべてのエラーメッセージがログに記録されます。 warn
すべての警告メッセージがログに記録されます。 notice
正常であっても、重要な状況はログに記録されます。 info
さまざまな情報メッセージがログに記録されます。 debug
さまざまなデバッグメッセージがログに記録されます。 例18.49 LogLevel ディレクティブの使用
LogLevel warn
-
MaxKeepAliveRequests
MaxKeepAliveRequests
ディレクティブでは、永続的な接続の要求の最大数を指定できます。以下の形式を取ります。MaxKeepAliveRequests number
数 値が大きいと、サーバーのパフォーマンスが向上することがあります。0
を使用すると、要求数が無制限になることに注意してください。デフォルトオプションは100
です。例18.50 MaxKeepAliveRequests オプションの使用
MaxKeepAliveRequests 100
-
NameVirtualHost
NameVirtualHost
ディレクティブを使用すると、名前ベースの仮想ホストの IP アドレスとポート番号を指定できます。以下の形式を取ります。NameVirtualHost ip-address[:port]
ip-address は、すべてのインターフェースを表す完全な IP アドレス、またはアスタリスク(*
)のいずれかになります。IPv6 アドレスは角括弧([
および ])で囲む必要があることに注意してください。ポート はオプションです。
名前ベースの仮想ホストを使用すると、1 つの Apache HTTP Server が複数の IP アドレスを使用せずに異なるドメインに対応できます。セキュアな HTTP 接続の使用名前ベースの仮想ホストは、セキュアでない HTTP 接続で のみ 機能します。セキュアなサーバーで仮想ホストを使用する場合は、代わりに IP アドレスベースの仮想ホストを使用してください。例18.51 NameVirtualHost ディレクティブの使用
NameVirtualHost *:80
-
オプション
Options
ディレクティブでは、特定のディレクトリーで利用可能なサーバー機能を指定できます。以下の形式を取ります。Options option…
この オプション は、表18.13「利用可能なサーバー機能」 の説明に従って、有効なキーワードである必要があります。表18.13 利用可能なサーバー機能 オプション 説明 ExecCGI
CGI スクリプトの実行を有効にします。 FollowSymLinks
ディレクトリーの以下のシンボリックリンクを有効にします。 インクルード (Include)
サーバー側のインクルードを有効にします。 IncludesNOEXEC
サーバー側のインクルードを有効にしますが、コマンドの実行はできません。 Indexes
サーバー生成ディレクトリーの一覧を有効にします。 MultiViews
コンテンツネゴシエートされた 「複数ビュー」 を有効にします。 SymLinksIfOwnerMatch
リンクとターゲットファイルの両方に同じ所有者がある場合は、ディレクトリー内の以下のシンボリックリンクを有効にします。 すべて
複数のビュー
以外の上記のすべての機能を有効にします。なし
上記のすべての機能を無効にします。 重要SymLinksIfOwnerMatch
オプションは、攻撃者が迂回できるためセキュリティー機能ではありません。例18.52 Options ディレクティブの使用
Options Indexes FollowSymLinks
-
順序
Order
ディレクティブでは、Allow
ディレクティブおよびDeny
ディレクティブを評価する順番を指定できます。以下の形式を取ります。Order option
この オプション は、表18.14「利用可能な順序オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはallow,deny
です。表18.14 利用可能な順序オプション オプション 説明 allow,deny
使用 できる
ディレクティブは最初に評価されます。deny,allow
deny
ディレクティブが最初に評価されます。例18.53 Order ディレクティブの使用
Order allow,deny
-
PidFile
PidFile
ディレクティブでは、サーバーの プロセス ID (PID)を保存するファイルを指定できます。以下の形式を取ります。PidFile path
パス は pid ファイルを参照します。これは、ServerRoot
ディレクティブ(デフォルトでは/etc/httpd/
)で指定されたディレクトリーへの相対または相対パスになります。デフォルトのオプションはrun/httpd.pid
です。例18.54 PidFile ディレクティブの使用
PidFile run/httpd.pid
-
ProxyRequests
ProxyRequests
ディレクティブを使用すると、転送プロキシー要求を有効にすることができます。以下の形式を取ります。ProxyRequests option
この オプション は、表18.15「利用可能な ProxyRequests オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOff
です。表18.15 利用可能な ProxyRequests オプション オプション 説明 オン
転送プロキシー要求を有効にします。 オフ
転送プロキシー要求を無効にします。 例18.55 ProxyRequests ディレクティブの使用
ProxyRequests On
-
ReadmeName
ReadmeName
ディレクティブを使用すると、サーバー生成ディレクトリー一覧の最後に追加するファイルを指定できます。以下の形式を取ります。ReadmeName filename
ファイル 名 は、要求されたディレクトリーで検索するファイルの名前です。デフォルトでは、サーバーはREADME.html
を検索します。例18.56 ReadmeName ディレクティブの使用
ReadmeName README.html
-
リダイレクト
Redirect
ディレクティブを使用すると、クライアントを別の URL にリダイレクトできます。以下の形式を取ります。Redirect [status] path url
ステータス は任意で、表18.16「利用可能なステータスオプション」 で説明されているように有効なキーワードである必要があります。パス は古い場所を参照し、DocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/docs
)。URL は コンテンツの現在の場所を参照します(例:http://docs.example.com
)。表18.16 利用可能なステータスオプション ステータス 説明 permanent
要求されたリソースが永続的に移動されたことを示します。 301
(Moved Permanently)ステータスコードがクライアントに返されます。temp
要求されたリソースが一時的に移動したことを示します。 302
(Found)ステータスコードがクライアントに返されます。seeother
要求されたリソースが置き換えられたことを示します。 303
(その他 を参照)のステータスコードがクライアントに返されます。gone
要求されたリソースが永続的に削除されたことを示します。 410
(Gone)ステータスはクライアントに返されます。より高度なリダイレクト技術の場合は、Apache HTTP Server インストールに含まれるmod_rewrite
モジュールを使用できます。例18.57 Redirect ディレクティブの使用
Redirect permanent /docs http://docs.example.com
-
ScriptAlias
ScriptAlias
ディレクティブを使用すると、CGI スクリプトの場所を指定できます。以下の形式を取ります。ScriptAlias url-path real-path
url-path はDocumentRoot
ディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/cgi-bin/
)。リアルタイムパス は、ローカルファイルシステム内のファイルまたはディレクトリーへの完全パスです。このディレクティブの後には、通常、ターゲットディレクトリーにアクセスするための追加のパーミッションを持つDirectory
タグが続きます。デフォルトでは、/var/www
alias が作成されます。/cgi-bin/
にあるスクリプトにアクセスできるように、/cgi-bin/ScriptAlias
ディレクティブは、CGI スクリプトが通常のテキストドキュメントとして表示されないようにするために使用されます。例18.58 ScriptAlias ディレクティブの使用
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>
-
ServerAdmin
ServerAdmin
ディレクティブでは、サーバー生成の Web ページに表示されるサーバー管理者のメールアドレスを指定できます。以下の形式を取ります。ServerAdmin email
デフォルトのオプションはroot@localhost
です。このディレクティブは、通常webmaster@hostname
に設定されます。hostname はサーバーのアドレスです。設定が完了すると、エイリアスwebmaster
は/etc/aliases
の Web サーバーを担当するユーザー、および superuser として newaliases コマンドを実行します。例18.59 ServerAdmin ディレクティブの使用
ServerAdmin webmaster@penguin.example.com
-
ServerName
ServerName
ディレクティブを使用すると、Web サーバーのホスト名およびポート番号を指定できます。以下の形式を取ります。ServerName hostname[:port]
ホスト名 は、サーバーの 完全修飾ドメイン名 (FQDN)である必要があります。ポート はオプションですが、指定する場合はListen
ディレクティブで指定された番号と一致する必要があります。このディレクティブを使用する場合は、IP アドレスとサーバー名のペアが/etc/hosts
ファイルに含まれていることを確認してください。例18.60 ServerName ディレクティブの使用
ServerName penguin.example.com:80
-
ServerRoot
ServerRoot
ディレクティブを使用すると、サーバーが機能するディレクトリーを指定できます。以下の形式を取ります。ServerRoot directory
ディレクトリー は、ローカルファイルシステム内の既存のディレクトリーへの完全パスである必要があります。デフォルトのオプションは/etc/httpd/
です。例18.61 ServerRoot ディレクティブの使用
ServerRoot /etc/httpd
-
ServerSignature
ServerSignature
ディレクティブを使用すると、サーバー生成ドキュメントのサーバーに関する情報を表示できます。以下の形式を取ります。ServerSignature option
この オプション は、表18.17「利用可能な ServerSignature オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOn
です。表18.17 利用可能な ServerSignature オプション オプション 説明 オン
サーバー名とバージョンをサーバー生成ページに追加できるようにします。 オフ
サーバー名とバージョンをサーバー生成ページに追加するを無効にします。 Email
ServerAdmin
ディレクティブで指定されたサーバー名、バージョン、およびメールアドレスをサーバー生成ページへ追加できるようにします。例18.62 ServerSignature ディレクティブの使用
ServerSignature On
-
ServerTokens
ServerTokens
ディレクティブを使用すると、Server 応答ヘッダーに含まれる情報をカスタマイズできます。以下の形式を取ります。ServerTokens option
この オプション は、表18.18「利用可能な ServerTokens オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOS
です。表18.18 利用可能な ServerTokens オプション オプション 説明 Prod
製品名( Apache
)のみが含まれます。メジャー
製品名とサーバーのメジャーバージョンが含まれます(例: 2
)。マイナー
製品名とサーバーのマイナーバージョンが含まれます(例: 2
.2)。Min
製品名と最小バージョンのサーバー(例: 2.2.15
)が含まれます。OS
製品名、サーバーの最小バージョン、および実行中のオペレーティングシステムのタイプ( Red Hat
など)が含まれます。Full
上記のすべての情報を、読み込んだモジュールのリストとともに追加します。 セキュリティー上の理由から、できるだけ少ないサーバーに関する情報を表示することが推奨されます。例18.63 ServerTokens ディレクティブの使用
ServerTokens Prod
-
SuexecUserGroup
SuexecUserGroup
ディレクティブを使用すると、CGI スクリプトが実行されるユーザーおよびグループを指定できます。以下の形式を取ります。SuexecUserGroup user group
ユーザー は既存のユーザーで、グループは有効な UNIX グループ である必要があります。セキュリティー上の理由から、CGI スクリプトは root 権限で実行する必要があります。<VirtualHost&
gt; では、SuexecUserGroup
はUser
ディレクティブおよびGroup
ディレクティブを置き換えます。例18.64 SuexecUserGroup ディレクティブの使用
SuexecUserGroup apache apache
-
タイムアウト
Timeout
ディレクティブでは、接続を閉じる前のイベントを待機する時間を指定できます。以下の形式を取ります。Timeout time
時間 は秒単位で指定します。デフォルトのオプションは60
です。例18.65 Timeout ディレクティブの使用
Timeout 60
-
TypesConfig
TypesConfig
を使用すると、MIME タイプ設定ファイルの場所を指定できます。以下の形式を取ります。TypesConfig path
パス は既存の MIME タイプの設定ファイルを参照し、絶対またはServerRoot
ディレクティブ(デフォルトでは/etc/httpd/
)で指定されたディレクトリーへの相対のいずれかになります。デフォルトのオプションは/etc/mime.types
です。/etc/mime.types
を編集する代わりに、Apache HTTP Server に MIME タイプマッピングを追加する方法としてAddType
ディレクティブを使用することが推奨されます。例18.66 TypesConfig ディレクティブの使用
TypesConfig /etc/mime.types
-
UseCanonicalName
UseCanonicalName
を使用すると、サーバー自体の参照方法を指定できます。以下の形式を取ります。UseCanonicalName option
この オプション は、表18.19「利用可能な UseCanonicalName オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOff
です。表18.19 利用可能な UseCanonicalName オプション オプション 説明 オン
ServerName
ディレクティブで指定された名前の使用を有効にします。オフ
ServerName
ディレクティブで指定された名前の使用を無効にします。代わりに、要求側のクライアントが提供するホスト名とポート番号が使用されます。DNS
ServerName
ディレクティブで指定された名前の使用を無効にします。代わりに逆引き DNS ルックアップによって決定されるホスト名が使用されます。例18.67 UseCanonicalName ディレクティブの使用
UseCanonicalName Off
-
ユーザー
User
ディレクティブでは、httpd
サービスを実行するユーザーを指定できます。以下の形式を取ります。User user
既存の UNIX ユーザー である必要があります。デフォルトのオプションはapache
です。セキュリティー上の理由から、httpd
サービスは root 権限で実行しないでください。User
は <VirtualHost> 内で
はサポートされなくなり、SuexecUserGroup
ディレクティブに置き換えられました。例18.68 User ディレクティブの使用
User apache
-
UserDir
UserDir
ディレクティブでは、ユーザーのホームディレクトリーからのコンテンツの提供を有効にできます。以下の形式を取ります。UserDir option
この オプション は、ユーザーのホームディレクトリー(通常はpublic_html
)を検索するディレクトリーの名前、または 表18.20「利用可能な UserDir オプション」 で説明されているように有効なキーワードになります。デフォルトのオプションは無効になっ
ています。表18.20 利用可能な UserDir オプション オプション 説明 enabled
user…指定の ユーザーのホームディレクトリーからコンテンツを提供できます。 disabled
[user…]ホームディレクトリーのコンテンツの提供を無効にします(すべてのユーザー、またはユーザースペースで区切られた一覧が指定された場合)は、指定の ユーザーにのみコンテンツを提供します。 適切なパーミッションの設定Web サーバーがコンテンツにアクセスできるようにするには、関連するディレクトリーおよびファイルのパーミッションを正しく設定する必要があります。すべてのユーザーがホームディレクトリーにアクセスでき、UserDir
ディレクティブで指定されたディレクトリーの内容にアクセスできることを確認します。以下に例を示します。~]# chmod a+x /home/username/ ~]# chmod a+rx /home/username/public_html/
このディレクトリーのすべてのファイルは適宜設定する必要があります。例18.69 UserDir ディレクティブの使用
UserDir public_html
18.1.5.2. 一般的な ssl.conf ディレクティブ
/etc/httpd/conf.d/ssl.conf
で一般的に使用されます。
-
SetEnvIf
SetEnvIf
ディレクティブでは、受信接続のヘッダーに基づいて環境変数を設定できます。以下の形式を取ります。SetEnvIf option pattern [!]variable[=value]…
この オプション は、表18.21「利用可能な SetEnvIf オプション」 で説明されているように、HTTP ヘッダーフィールド、以前に定義した環境変数名、または有効なキーワードのいずれかです。この パターン は正規表現です。変数 は、オプションがパターンと一致する際に設定される環境変数です。オプションの感嘆符(つまり!
)が存在する場合、変数は設定されずに削除されます。表18.21 利用可能な SetEnvIf オプション オプション 説明 Remote_Host
クライアントのホスト名を参照します。 Remote_Addr
クライアントの IP アドレスを参照します。 Server_Addr
サーバーの IP アドレスを参照します。 Request_Method
リクエストメソッドを参照します(例: GET
)。Request_Protocol
プロトコル名とバージョン( HTTP/1.1 など)を参照します
。Request_URI
要求されたリソースを参照します。 SetEnvIf
ディレクティブは、HTTP keepalives を無効にし、クライアントのブラウザーからクローズ通知なしに SSL が接続を閉じるのを許可するために使用されます。これは、SSL 接続を確実にシャットダウンしていない特定の Web ブラウザーに必要です。例18.70 SetEnvIf ディレクティブの使用
SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
/etc/httpd/conf.d/ssl.conf
ファイルが存在する場合は、mod_ssl をインストールする必要があります。SSL サーバーのインストールおよび設定方法の詳細は、「SSL サーバーの設定」 を参照してください。
18.1.5.3. 一般的な複数プロセスモジュールのディレクティブ
IfModule
に組み込まれています。デフォルトでは、server-pool は prefork
と worker
MPM の両方に対して定義されます。
/etc/httpd/conf/httpd.conf
で一般的に使用されます。
-
MaxClients
MaxClients
ディレクティブを使用すると、一度に処理する同時接続クライアントの最大数を指定できます。以下の形式を取ります。MaxClients number
prefork MPM を使用する場合は、高い 数値 を指定するとサーバーのパフォーマンスが向上しますが、prefork
MPM を使用する場合は256
を超えることは推奨されません。例18.71 MaxClients ディレクティブの使用
MaxClients 256
-
MaxRequestsPerChild
MaxRequestsPerChild
ディレクティブでは、終了前に子プロセスが処理できるリクエストの最大数を指定できます。以下の形式を取ります。MaxRequestsPerChild number
数値を0
に設定すると、要求数が無制限になります。MaxRequestsPerChild
ディレクティブは、有効期限の長いプロセスがメモリーリークを引き起こさないようにするために使用されます。例18.72 MaxRequestsPerChild ディレクティブの使用
MaxRequestsPerChild 4000
-
MaxSpareServers
MaxSpareServers
ディレクティブでは、スペア子プロセスの最大数を指定できます。以下の形式を取ります。MaxSpareServers number
このディレクティブは、prefork
MPM のみによって使用されます。例18.73 MaxSpareServers ディレクティブの使用
MaxSpareServers 20
-
MaxSpareThreads
MaxSpareThreads
ディレクティブを使用すると、スペアサーバースレッドの最大数を指定できます。以下の形式を取ります。MaxSpareThreads number
数値 はMinSpareThreads
およびThreadsPerChild
の合計値以上である必要があります。このディレクティブは、worker
MPM だけによって使用されます。例18.74 MaxSpareThreads ディレクティブの使用
MaxSpareThreads 75
-
MinSpareServers
MinSpareServers
ディレクティブでは、予備の子プロセスの最小数を指定できます。以下の形式を取ります。MinSpareServers number
数 値が大きいと、サーバーに大量の処理負荷が発生する可能性があることに注意してください。このディレクティブは、prefork
MPM のみによって使用されます。例18.75 MinSpareServers ディレクティブの使用
MinSpareServers 5
-
MinSpareThreads
MinSpareThreads
ディレクティブを使用すると、スペアサーバースレッドの最小数を指定できます。以下の形式を取ります。MinSpareThreads number
このディレクティブは、worker
MPM だけによって使用されます。例18.76 MinSpareThreads ディレクティブの使用
MinSpareThreads 75
-
StartServers
StartServers
ディレクティブでは、サービスの起動時に作成する子プロセスの数を指定できます。以下の形式を取ります。StartServers number
子プロセスは現在のトラフィックの負荷に応じて動的に作成され、終了されるため、通常はこの値を変更する必要はありません。例18.77 StartServers ディレクティブの使用
StartServers 8
-
ThreadsPerChild
ThreadsPerChild
ディレクティブを使用すると、子プロセスが作成できるスレッド数を指定できます。以下の形式を取ります。ThreadsPerChild number
このディレクティブは、worker
MPM だけによって使用されます。例18.78 ThreadsPerChild ディレクティブの使用
ThreadsPerChild 25
18.1.6. モジュールの使用
httpd
サービスは、モジュールアプリケーションであるため、多数の Dynamic Shared Objects (DSOs)とともに配布されます。これは、必要に応じてランタイム時に、動的に読み込まれたり、アンロードしたりできます。デフォルトでは、これらのモジュールは 32 ビットおよび 64 ビットシステムの /usr/lib64/httpd/modules
/ の /usr/lib/httpd/modules/
にあります。
18.1.6.1. モジュールの読み込み
LoadModule
ディレクティブを使用します。別のパッケージが提供するモジュールでは、多くの場合、/etc/httpd/conf.d/
ディレクトリーに独自の設定ファイルがあることに注意してください。
例18.79 mod_ssl DSO の読み込み
LoadModule ssl_module modules/mod_ssl.so
httpd
サービスを再起動する方法は、「サービスの再起動」 を参照してください。
18.1.6.2. モジュールの作成
root
で次のコマンドを実行します。
~]# yum install httpd-devel
~]# apxs -i -a -c module_name.c
18.1.7. 仮想ホストの設定
/etc/httpd/conf/httpd.conf
で提供される仮想ホストコンテナーを見つけ、各行の先頭にあるハッシュ記号(つまり #
)を削除し、例18.80「仮想ホストの設定例」 に記載の要件に応じてオプションをカスタマイズします。
例18.80 仮想ホストの設定例
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@penguin.example.com DocumentRoot /www/docs/penguin.example.com ServerName penguin.example.com ServerAlias www.penguin.example.com ErrorLog logs/penguin.example.com-error_log CustomLog logs/penguin.example.com-access_log common </VirtualHost>
ServerName
は、マシンに割り当てられた有効な DNS 名を指定する必要があることに注意してください。< ;VirtualHost>
; コンテナーは高度なカスタマイズが可能で、メインサーバー設定で利用可能なディレクティブのほとんどを使用できます。このコンテナーで対応してい ない ディレクティブには、SuexecUserGroup
に置き換えられた User
および Group
が含まれます。
/etc/httpd/conf/httpd.conf
ファイルのグローバル設定セクションの Listen
ディレクティブを必ず更新してください。
httpd
サービスを再起動する方法は、「サービスの再起動」 を参照してください。
18.1.8. SSL サーバーの設定
mod_ssl
と組み合わせて、OpenSSL ツールキットを使用して SSL/TLS サポートを提供するモジュールは、SSL サーバー と呼ばれます。Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux は、TLS 実装としての Mozilla NSS の使用もサポートします。Mozilla NSS のサポートは mod_nss
モジュールにより提供されます。
18.1.8.1. 証明書およびセキュリティーの概要
Web ブラウザー | リンク |
---|---|
Mozilla Firefox | Mozilla root CA の一覧 |
Opera | Opera が使用するルート証明書に関する情報。 |
Internet Explorer | Microsoft Windows が使用するルート証明書に関する情報 |
Chromium | Chromium プロジェクトが使用するルート証明書に関する情報 |
18.1.9. mod_ssl モジュールの有効化
mod_ssl
を使用して SSL または HTTPS サーバーをセットアップする場合は、別のアプリケーションまたはモジュール( mod_nss
など)で同じポートを使用するよう設定することは できません。ポート 443
は、HTTPS のデフォルトポートです。
mod_ssl
モジュールおよび OpenSSL ツールキットを使用して SSL サーバーを設定するには、mod_ssl および openssl パッケージをインストールします。root
で以下のコマンドを入力します。
~]# yum install mod_ssl openssl
/etc/httpd/conf.d/ssl.conf
に mod_ssl
設定ファイルが作成されます。このファイルは、デフォルトでメインの Apache HTTP Server 設定ファイルに含まれています。モジュールを読み込むには、「サービスの再起動」 の説明に従って httpd
サービスを再起動します。
SSL
を無効にし、有効にしている場合は TLSv1 .
1 または TLSv1
.2 のみを使用することを推奨します。後方互換性は、TLSv1.0
を使用して実現できます。Red Hat がサポートする多くの製品は SSLv2
プロトコルまたは SSLv3
プロトコルを使用できます。ただし、SSLv2
または SSLv3
の使用が強く推奨されます。
18.1.9.1. mod_ssl での SSL および TLS の有効化および無効化
手順18.1 SSLv2 および SSLv3 の無効化
root
で/etc/httpd/conf.d/ssl.conf
ファイルを開き、SSLProtocol ディレクティブの すべて のインスタンスを検索します。デフォルトでは、設定ファイルに以下のような 1 つのセクションが含まれます。~]# vi /etc/httpd/conf.d/ssl.conf # SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol all -SSLv2
このセクションは、VirtualHost セクション内にあります。- SSLProtocol 行を以下のように編集します。
# SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol all -SSLv2 -SSLv3
すべての VirtualHost セクションに対してこのアクションを繰り返します。ファイルを保存してから閉じます。 - すべての SSLProtocol ディレクティブが以下のように変更したことを確認します。
~]# grep SSLProtocol /etc/httpd/conf.d/ssl.conf SSLProtocol all -SSLv2 -SSLv3
この手順は、デフォルトの VirtualHost セクションが複数の場合に特に重要になります。 - 以下のように Apache デーモンを再起動します。
~]# service httpd restart
セッションが中断されることに注意してください。
手順18.2 TLS 1 以上を除くすべての SSL および TLS プロトコルの無効化
root
で/etc/httpd/conf.d/ssl.conf
ファイルを開き、SSLProtocol ディレクティブの すべて のインスタンスを検索します。デフォルトでは、このファイルには以下のようなセクションが含まれます。~]# vi /etc/httpd/conf.d/ssl.conf # SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol all -SSLv2
- SSLProtocol 行を以下のように編集します。
# SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
ファイルを保存してから閉じます。 - 以下のように変更を確認します。
~]# grep SSLProtocol /etc/httpd/conf.d/ssl.conf SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
- 以下のように Apache デーモンを再起動します。
~]# service httpd restart
セッションが中断されることに注意してください。
手順18.3 SSL および TLS プロトコルのステータスのテスト
openssl s_client -connect hostname:port -protocolです。port は、テストするポートで、protocol はテストするプロトコルバージョンです。ローカルで稼働している SSL サーバーをテストするには、
localhost
をホスト名として使用します。たとえば、SSLv3 が有効であるかどうかを確認するためにセキュアな HTTPS 接続のデフォルトポートであるポート 443
をテストするには、以下のようにコマンドを発行します。
~]# openssl s_client -connect localhost:443 -ssl3 CONNECTED(00000003) 139809943877536:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1257:SSL alert number 40 139809943877536:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596: output omitted New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : SSLv3 output truncated
上記の出力はハンドシェイクが失敗し、暗号化がネゴシエートされなかったことを示しています。~]$ openssl s_client -connect localhost:443 -tls1_2 CONNECTED(00000003) depth=0 C = --, ST = SomeState, L = SomeCity, O = SomeOrganization, OU = SomeOrganizationalUnit, CN = localhost.localdomain, emailAddress = root@localhost.localdomain output omitted New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 output truncated
上記の出力は、ハンドシェイクが失敗しておらず、暗号化セットがネゴシエートされたことを示しています。
s_client(1)
man ページに記載されています。
18.1.10. mod_nss Module の有効化
mod_nss
を使用して HTTPS サーバーをセットアップする場合、mod_ssl
はデフォルトでポート 443
を使用するため、HTTPS サーバーでは mod_ssl
を同時に使用することが できません が、これはデフォルトの HTTPS ポートになります。パッケージが必要ない場合は削除することが推奨されます。
root
で次のコマンドを実行します。
~]# yum remove mod_ssl
mod_ssl
が必要な場合は、443
以外のポートを使用するように /etc/httpd/conf.d/ssl.conf
ファイルを変更し、リッスンするポートが 443
に変更されたときに mod_ssl
が mod_nss
と競合しないようにします。
mod_nss
と mod_ssl
は一意のポートを使用している場合のみ同時に共存できます。このため、mod_nss
はデフォルトで 8443
を使用しますが、HTTPS のデフォルトポートはポート 443
です。ポートは Listen ディレクティブと VirtualHost 名またはアドレスで指定されます。
手順18.4 mod_nss の設定
root
で mod_nss をインストールします。~]# yum install mod_nss
これにより、/etc/httpd/conf.d/nss.conf
にmod_nss
設定ファイルが作成されます。/etc/httpd/conf.d/
ディレクトリーは、デフォルトでメインの Apache HTTP Server 設定ファイルに含まれます。モジュールを読み込むには、「サービスの再起動」 の説明に従ってhttpd
サービスを再起動します。root
で/etc/httpd/conf.d/nss.conf
ファイルを開き、Listen ディレクティブの すべて のインスタンスを検索します。Listen 8443 行を以下のように編集します。Listen 443
ポート443
は、HTTPS
のデフォルトポートです。- デフォルトの VirtualHost _default_:8443 行を以下のように編集します。
VirtualHost _default_:443
デフォルト以外の他のすべての仮想ホストセクション (存在する場合) を編集します。ファイルを保存してから閉じます。 - Mozilla NSS は、証明書を
/etc/httpd/conf.d/nss.conf
ファイルの NSSCertificateDatabase ディレクティブで示唆される サーバー証明書データベース に保存します。デフォルトでは、パスはインストール時に作成された NSS データベースである/etc/httpd/alias
に設定されます。デフォルトの NSS データベースを表示するには、以下のコマンドを実行します。~]# certutil -L -d /etc/httpd/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI cacert CTu,Cu,Cu Server-Cert u,u,u alpha u,pu,u
上記のコマンド出力では、Server-Cert
がデフォルトの NSSNickname です。-L
オプションは、証明書データベースにすべての証明書を一覧表示したり、名前付き証明書に関する情報を表示します。-d
オプションは、証明書およびキーデータベースファイルを含むデータベースディレクトリーを指定します。その他のコマンドラインオプションは、certutil(1)
の man ページを参照してください。 - 別のデータベースを使用するように mod_nss を設定するには、
/etc/httpd/conf.d/nss.conf
ファイルの NSSCertificateDatabase 行を編集します。デフォルトファイルの VirtualHost セクション内には以下の行が含まれます。# Server Certificate Database: # The NSS security database directory that holds the certificates and # keys. The database consists of 3 files: cert8.db, key3.db and secmod.db. # Provide the directory that these files exist. NSSCertificateDatabase /etc/httpd/alias
上記のコマンド出力では、alias
がデフォルトの NSS データベースディレクトリー/etc/httpd/alias/
です。 - デフォルトの NSS 証明書データベースにパスワードを適用するには、
root
で以下のコマンドを使用します。~]# certutil -W -d /etc/httpd/alias Enter Password or Pin for "NSS Certificate DB": Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter password: Password changed successfully.
- HTTPS サーバーをデプロイする前に、認証局 (CA) により署名された証明書を使用して新しい証明書データベースを作成します。
例18.81 Mozilla NSS データベースへの証明書の追加
certutil コマンドは、CA 証明書を NSS データベースファイルに追加するために使用されます。certutil
-d
/etc/httpd/nss-db-directory/
-A
-n
"CA_certificate"-t
CT,,
-a
-i
certificate.pem
上記のコマンドは、certificate.pem という名前の PEM 形式のファイルに保存されている CA 証明書を追加します。-d
オプションは、証明書およびキーデータベースファイルを含む NSS データベースディレクトリーを指定します。-n
オプションは、証明書の名前(-t
CT,,
)を設定します。これは、証明書が TLS クライアントおよびサーバーで使用されるように信頼されることを意味します。-A
オプションは、既存の証明書を証明書データベースに追加します。データベースが存在しない場合は、作成されます。-a
オプションを使用すると、入力または出力に ASCII 形式を使用でき、-i
オプションはcertificate.pem
入力ファイルをコマンドに渡します。その他のコマンドラインオプションは、certutil(1)
の man ページを参照してください。 - 秘密鍵を保護するために、NSS データベースはパスワードで保護する必要があります。
例18.82 Setting_a_Password_for_a_Mozilla_NSS_database
NSS データベースのパスワードを設定するには、以下のように certutil ツールを使用できます。certutil -W -d /etc/httpd/nss-db-directory/
たとえば、デフォルトのデータベースの場合は、root
で以下のコマンドを実行します。~]# certutil -W -d /etc/httpd/alias Enter Password or Pin for "NSS Certificate DB": Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter password: Password changed successfully.
- 以下のように NSSPassPhraseDialog ディレクティブで行を変更して、NSS 内部ソフトウェアトークンを使用するように
mod_nss
を設定します。~]# vi /etc/httpd/conf.d/nss.conf NSSPassPhraseDialog file:/etc/httpd/password.conf
これにより、システムの起動時にパスワードを手動で入力する必要がなくなります。ソフトウェアトークンは NSS データベースに存在しますが、証明書を含む物理トークンを使用することもできます。 - NSS データベースに含まれる SSL サーバー証明書が RSA 証明書である場合は、NSSNickname パラメーターのコメントを解除し、上記の手順 4 で示されたニックネームに一致するようにします。
~]# vi /etc/httpd/conf.d/nss.conf NSSNickname Server-Cert
NSS データベースに含まれる SSL サーバー証明書が ECC 証明書である場合は、NSSECCNickname パラメーターのコメントを解除し、上記の手順 4 で示されたニックネームに一致するようにします。~]# vi /etc/httpd/conf.d/nss.conf NSSECCNickname Server-Cert
NSSCertificateDatabase パラメーターがコメント解除され、上記の手順 4 で示された、または手順 5 で設定された NSS データベースディレクトリーを参照するようにします。~]# vi /etc/httpd/conf.d/nss.conf NSSCertificateDatabase /etc/httpd/alias
/etc/httpd/alias
を、使用する証明書データベースへのパスに置き換えます。 root
で/etc/httpd/password.conf
ファイルを作成します。~]# vi /etc/httpd/password.conf
internal:password
の形式の行を追加します。上記の手順 6 で NSS セキュリティーデータベースに適用したパスワードでパスワードを置き換えます。- 適切な所有権とパーミッションを
/etc/httpd/password.conf
ファイルに適用します。~]# chgrp apache /etc/httpd/password.conf ~]# chmod 640 /etc/httpd/password.conf ~]# ls -l /etc/httpd/password.conf -rw-r-----. 1 root apache 10 Dec 4 17:13 /etc/httpd/password.conf
- NSS のソフトウェアトークンを使用するように
mod_nss
を設定するには、/etc/httpd/password.conf
で/etc/httpd/conf.d/nss.conf
を以下のように編集します。~]# vi /etc/httpd/conf.d/nss.conf
- 変更を反映するために、「サービスの再起動」 の説明通りに Apache サーバーを再起動します。
SSL
を無効にし、有効にしている場合は TLSv1 .
1 または TLSv1
.2 のみを使用することを推奨します。後方互換性は、TLSv1.0
を使用して実現できます。Red Hat がサポートする多くの製品は SSLv2
プロトコルまたは SSLv3
プロトコルを使用できます。ただし、SSLv2
または SSLv3
の使用が強く推奨されます。
18.1.10.1. mod_nss での SSL および TLS の有効化および無効化
手順18.5 mod_nss での TLS 1 以上を除くすべての SSL および TLS プロトコルの無効化
root
で/etc/httpd/conf.d/nss.conf
ファイルを開き、NSSProtocol ディレクティブの すべて のインスタンスを検索します。デフォルトでは、設定ファイルに以下のような 1 つのセクションが含まれます。~]# vi /etc/httpd/conf.d/nss.conf # SSL Protocol: output omitted # Since all protocol ranges are completely inclusive, and no protocol in the # middle of a range may be excluded, the entry "NSSProtocol SSLv3,TLSv1.1" # is identical to the entry "NSSProtocol SSLv3,TLSv1.0,TLSv1.1". NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2
このセクションは、VirtualHost セクション内にあります。- NSSProtocol 行を以下のように編集します。
# SSL Protocol: NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2
すべての VirtualHost セクションに対してこのアクションを繰り返します。 - Listen 8443 行を以下のように編集します。
Listen 443
- デフォルトの VirtualHost _default_:8443 行を以下のように編集します。
VirtualHost _default_:443
デフォルト以外の他のすべての仮想ホストセクション (存在する場合) を編集します。ファイルを保存してから閉じます。 - すべての NSSProtocol ディレクティブが以下のように変更したことを確認します。
~]# grep NSSProtocol /etc/httpd/conf.d/nss.conf # middle of a range may be excluded, the entry "NSSProtocol SSLv3,TLSv1.1" # is identical to the entry "NSSProtocol SSLv3,TLSv1.0,TLSv1.1". NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2
この手順は、VirtualHost セクションが複数の場合に特に重要になります。 - 以下のように Apache デーモンを再起動します。
~]# service httpd restart
セッションが中断されることに注意してください。
手順18.6 mod_nss での SSL および TLS プロトコルのステータスのテスト
root
で openssl パッケージをインストールします。
~]# yum install openssl
openssl s_client -connect hostname:port -protocolになります。port は、テストするポートで、protocol はテストするプロトコルバージョンです。ローカルで稼働している SSL サーバーをテストするには、
localhost
をホスト名として使用します。たとえば、SSLv3 が有効であるかどうかを確認するためにセキュアな HTTPS 接続のデフォルトポートであるポート 443
をテストするには、以下のようにコマンドを発行します。
~]# openssl s_client -connect localhost:443 -ssl3 CONNECTED(00000003) 3077773036:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:337: output omitted New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : SSLv3 output truncated
上記の出力はハンドシェイクが失敗し、暗号化がネゴシエートされなかったことを示しています。~]$ openssl s_client -connect localhost:443 -tls1_2 CONNECTED(00000003) depth=1 C = US, O = example.com, CN = Certificate Shack output omitted New, TLSv1/SSLv3, Cipher is AES256-SHA Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : AES256-SHA output truncated
上記の出力は、ハンドシェイクが失敗しておらず、暗号化セットがネゴシエートされたことを示しています。
s_client(1)
man ページに記載されています。
18.1.11. 既存の鍵および証明書の使用
- IP アドレスまたはドメイン名を変更している。証明書が、特定の IP アドレスとドメイン名のペアに対して発行されます。この値のいずれかが変更すると、証明書が無効になります。
- VeriSign からの証明書があり、サーバーソフトウェアを変更している。Verivsftpd は、幅広く使用されている認証局で、特定のソフトウェア製品、IP アドレス、およびドメイン名の証明書を発行します。ソフトウェア製品を変更すると、証明書が無効になります。
/etc/pki/tls/private/
ディレクトリーと /etc/pki/tls/certs/
ディレクトリーに移動します。root
で以下のコマンドを実行してこれを実行できます。
~]# mvkey_file.key
/etc/pki/tls/private/hostname.key
~]# mvcertificate.crt
/etc/pki/tls/certs/hostname.crt
/etc/httpd/conf.d/ssl.conf
設定ファイルに追加します。
SSLCertificateFile /etc/pki/tls/certs/hostname.crt SSLCertificateKeyFile /etc/pki/tls/private/hostname.key
httpd
サービスを再起動します。
例18.83 Red Hat Secure Web Server からの鍵と証明書の使用
~]# mv /etc/httpd/conf/httpsd.key /etc/pki/tls/private/penguin.example.com.key ~]# mv /etc/httpd/conf/httpsd.crt /etc/pki/tls/certs/penguin.example.com.crt
18.1.12. 新しい鍵と証明書の生成
root
で次のコマンドを実行します。
~]# yum install crypto-utils mod_ssl
~]# openssl req -x509 -new -set_serial number -key hostname.key -out hostname.crt
root
で以下のコマンドを使用して既存のファイルを削除します。
~]# rm /etc/pki/tls/private/hostname.key
root
で genkey コマンドの後に、適切なホスト名(例: penguin.example.com
)を付けて実行します。
~]# genkey hostname
- 鍵と証明書を保存する場所を確認します。
図18.1 genkey ユーティリティーの実行
[D]Tab キーを使用してボタンを選択してから、Enter キーを押すと次の画面を進みます。 - up と down の矢印キーを使用して、適切な鍵のサイズを選択します。鍵が大きくなればセキュリティーは向上しますが、サーバーの応答時間も長くなることに注意してください。NIST では、
2048 bits
の使用が推奨されています。『NIST Special Publication 800-131A』 を参照してください。図18.2 鍵のサイズ選択
[D]終了したら、タブ キーを使用してボタンを選択し、Enter キーを押すと、ランダムなビットの生成プロセスが開始します。選択した鍵のサイズによっては、時間がかかることもあります。 - 証明書要求を認証局に送信するかどうかを決定します。
図18.3 証明書要求の生成
[D]タブ キーを使用してを選択し、証明書要求を組み立てるか、または を選択して、自己署名の証明書を生成します。その後、Enter キーを押して、選択を確認します。 - Spacebar (スペースバー) キーを使用すると、秘密鍵の暗号化を有効にする (
[*]
) か、無効にする ([ ]
) 選択ができます。図18.4 秘密鍵の暗号化
[D]Tab キーを使用してボタンを選択してから、Enter キーを押すと次の画面を進みます。 - 秘密鍵の暗号化を有効にしている場合は、適切なパスフレーズを入力します。セキュリティーの理由により入力時には文字が表示されませんが、最低でも 5 文字の長さが必要です。
図18.5 パスフレーズの入力
[D]Tab キーを使用してボタンを選択してから、Enter キーを押すと次の画面を進みます。パスフレーズを忘れないようにしてくださいサーバーを起動するには正しいパスフレーズの入力が必要です。それを紛失したり忘れたりした場合は、新しい鍵と証明書を生成する必要があります。 - 証明書詳細のカスタマイズ
図18.6 証明書情報の指定
[D]タブ キーを使用してボタンを選択し、Enter を押すと鍵の生成が完了します。 - 証明書要求の生成を有効にしていた場合は、それを認証局に送信するように求められます。
図18.7 証明書要求を送信する方法の指示
[D]Enter を押してシェルプロンプトに戻ります。
/etc/httpd/conf.d/ssl.conf
設定ファイルに追加します。
SSLCertificateFile /etc/pki/tls/certs/hostname.crt SSLCertificateKeyFile /etc/pki/tls/private/hostname.key
httpd
サービスを再起動して、更新された設定が読み込まれます。
18.1.13. コマンドラインを使用して HTTP 用および HTTPS 用にファイアウォールを設定
HTTP
および HTTPS
トラフィックを許可しません。システムが Web サーバーとして機能するようにするには、必要に応じてポートとプロトコルを有効にします。HTTP
のデフォルトポートは 80
で、HTTPS
のデフォルトポートは 443
です。いずれの場合も、TCP
がファイアウォールを通過することを許可されている必要があります。
HTTP
のポート 80
を有効にするには、root
で以下のコマンドを発行します。
~]# lokkit --port=80:tcp --update
これにより、--disabled
オプションで無効にされていない限り、ファイアウォールが再起動されることに注意してください。アクティブな接続は終了し、開始マシンでタイムアウトします。lokkit --help コマンドを使用して、組み込みのヘルプを表示します。
HTTPS
のポート 443
を有効にするには、root
で以下のコマンドを発行します。
~]# lokkit --port=443:tcp --update
これにより、--disabled
オプションで無効にされていない限り、ファイアウォールが再起動されることに注意してください。アクティブな接続は終了し、開始マシンでタイムアウトします。サービスおよびそれらの関連付けられたポートの一覧は、/etc/services
ファイルを参照してください。
/etc/sysconfig/system-config-firewall
ファイルの詳細を確認します。/etc/sysconfig/system-config-firewall
の設定を適用するには、root
で以下のコマンドを実行します。
~]# lokkit --update
HTTPS
がファイアウォールを通過できるようにするには、root
ユーザーになり、以下の行を /etc/sysconfig/system-config-firewall
に追加します。
--port=443:tcpファイアウォールが再読み込みされたり、システムが再起動されても、これらの変更は反映されないことに注意してください。
/etc/sysconfig/system-config-firewall
で変更を適用するには、root
で以下のコマンドを実行します。
~]# lokkit --update
18.1.13.1. コマンドラインで着信 HTTPS および HTTPS のネットワークアクセスの確認
root
で以下のコマンドを実行します。
~]# less /etc/sysconfig/system-config-firewall
# Configuration file for system-config-firewall
--enabled
--service=ssh
この例では、デフォルトのインストールでファイアウォールは有効になっていますが、HTTP
と HTTPS
は通過できません。
HTTP
のデフォルトポートを有効にすると、以下の行が上記の行に加えて出力として表示されます。
--port=80:tcp
HTTP
トラフィックを許可しているかどうかを確認するには、root
で以下のコマンドを実行します。
~]# iptables -L -n | grep 'tcp.*80'
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
HTTPS
のデフォルトポートを有効にすると、以下の行が上記の行に加えて出力として表示されます。
--port=443:tcp
HTTPS
トラフィックを許可しているかどうかを確認するには、root
で以下のコマンドを実行します。
~]# iptables -L -n | grep 'tcp.*443'
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
18.1.14. その他のリソース
インストールされているドキュメント
httpd(8)
:httpd
サービスの man ページで、コマンドラインオプションの一覧が記載されます。genkey(1)
: crypto-utils パッケージが提供する genkey ユーティリティーの man ページです。
インストール可能なドキュメント
- http://localhost/manual/ - Apache HTTP Server の公式ドキュメントで、そのディレクティブと利用可能なモジュールの詳細を説明します。本書にアクセスするには、httpd-manual パッケージがインストールされ、Web サーバーが稼働している必要があることに注意してください。ドキュメントにアクセスする前に、
root
で以下のコマンドを発行します。~]# yum install httpd-manual ~]# service httpd graceful
オンラインドキュメント
- http://httpd.apache.org/ - Apache HTTP Server の公式 Web サイトです。すべてのディレクティブおよびデフォルトモジュールの説明が記載されています。
- http://www.openssl.org/ - その他のドキュメント、よくある質問、メーリングリストへのリンクなどの役立つリソースを掲載した OpenSSL のホームページです。