第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 アドレス、完全修飾ドメイン名、または特別な形式になります。Expand 表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 pathcontent-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)。パターン は、ファイル名、ファイル拡張子、ワイルドカード式、または以下の表に記載されている特別な形式になります。Expand 表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-pathurl-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 つである必要があります。Expand 表18.4 利用可能な AllowOverride オプション オプション 説明 すべて.htaccessのすべてのディレクティブは、以前の設定を上書きすることができます。なし.htaccessのディレクティブは、以前の設定を上書きすることはできません。AuthConfigAuthName、AuthType、またはRequireなどの承認ディレクティブを使用できます。FileInfoDefaultType、RequestHeader、またはRewriteEngine、およびActionディレクティブなどのファイルタイプ、メタデータ、およびmod_rewriteディレクティブを使用できます。IndexesAddDescription、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 を使用できます。Expand 表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です。Expand 表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-typecontent-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 actionerror-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です。Expand 表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です。Expand 表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です。Expand 表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ファイル名列の幅を指定します。値 は、幅を自動的に調整する多数の文字またはアスタリスク( *)のいずれかになります。ScanHTMLTitlesAddDescriptionディレクティブでファイルが指定されていない場合に、説明(つまりtitle要素)のファイルの解析を有効にします。ShowForbidden他のアクセスが制限されているファイルの一覧表示を有効にします。 SuppressColumnSorting列ヘッダーをクリックして、ディレクトリー一覧の並べ替えを無効にします。 SuppressDescriptionファイルの説明のために領域の確保を無効にします。 SuppressHTMLPreambleHeaderNameディレクティブで指定されたファイルが存在する場合に、標準の HTML プリアンブルの使用を無効にします。SuppressIconディレクトリー一覧でアイコンの使用を無効にします。 SuppressLastModifiedディレクトリー一覧の最後の変更フィールドの日付の表示を無効にします。 SuppressRulesディレクトリー一覧での水平行の使用を無効にします。 SuppressSizeディレクトリー一覧のファイルサイズフィールドの表示を無効にします。 TrackModifiedHTTP ヘッダーの 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です。Expand 表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ディレクティブの形式文字列の代わりに使用できます。Expand 表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です。Expand 表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「利用可能なサーバー機能」 の説明に従って、有効なキーワードである必要があります。Expand 表18.13 利用可能なサーバー機能 オプション 説明 ExecCGICGI スクリプトの実行を有効にします。 FollowSymLinksディレクトリーの以下のシンボリックリンクを有効にします。 インクルード (Include)サーバー側のインクルードを有効にします。 IncludesNOEXECサーバー側のインクルードを有効にしますが、コマンドの実行はできません。 Indexesサーバー生成ディレクトリーの一覧を有効にします。 MultiViewsコンテンツネゴシエートされた 「複数ビュー」 を有効にします。 SymLinksIfOwnerMatchリンクとターゲットファイルの両方に同じ所有者がある場合は、ディレクトリー内の以下のシンボリックリンクを有効にします。 すべて複数のビュー以外の上記のすべての機能を有効にします。なし上記のすべての機能を無効にします。 重要SymLinksIfOwnerMatchオプションは、攻撃者が迂回できるためセキュリティー機能ではありません。例18.52 Options ディレクティブの使用
Options Indexes FollowSymLinks-
順序 Orderディレクティブでは、AllowディレクティブおよびDenyディレクティブを評価する順番を指定できます。以下の形式を取ります。Order optionこの オプション は、表18.14「利用可能な順序オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはallow,denyです。Expand 表18.14 利用可能な順序オプション オプション 説明 allow,deny使用 できるディレクティブは最初に評価されます。deny,allowdenyディレクティブが最初に評価されます。例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です。Expand 表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)。Expand 表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-pathurl-path はDocumentRootディレクティブで指定されたディレクトリーに対して相対的である必要があります(例:/cgi-bin/)。リアルタイムパス は、ローカルファイルシステム内のファイルまたはディレクトリーへの完全パスです。このディレクティブの後には、通常、ターゲットディレクトリーにアクセスするための追加のパーミッションを持つDirectoryタグが続きます。デフォルトでは、/var/wwwalias が作成されます。/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です。Expand 表18.17 利用可能な ServerSignature オプション オプション 説明 オンサーバー名とバージョンをサーバー生成ページに追加できるようにします。 オフサーバー名とバージョンをサーバー生成ページに追加するを無効にします。 EmailServerAdminディレクティブで指定されたサーバー名、バージョン、およびメールアドレスをサーバー生成ページへ追加できるようにします。例18.62 ServerSignature ディレクティブの使用
ServerSignature On-
ServerTokens ServerTokensディレクティブを使用すると、Server 応答ヘッダーに含まれる情報をカスタマイズできます。以下の形式を取ります。ServerTokens optionこの オプション は、表18.18「利用可能な ServerTokens オプション」 の説明に従って、有効なキーワードである必要があります。デフォルトのオプションはOSです。Expand 表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> では、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です。Expand 表18.19 利用可能な UseCanonicalName オプション オプション 説明 オンServerNameディレクティブで指定された名前の使用を有効にします。オフServerNameディレクティブで指定された名前の使用を無効にします。代わりに、要求側のクライアントが提供するホスト名とポート番号が使用されます。DNSServerNameディレクティブで指定された名前の使用を無効にします。代わりに逆引き 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 オプション」 で説明されているように有効なキーワードになります。デフォルトのオプションは無効になっています。Expand 表18.20 利用可能な UserDir オプション オプション 説明 enableduser…指定の ユーザーのホームディレクトリーからコンテンツを提供できます。 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 ヘッダーフィールド、以前に定義した環境変数名、または有効なキーワードのいずれかです。この パターン は正規表現です。変数 は、オプションがパターンと一致する際に設定される環境変数です。オプションの感嘆符(つまり!)が存在する場合、変数は設定されずに削除されます。Expand 表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 numberprefork MPM を使用する場合は、高い 数値 を指定するとサーバーのパフォーマンスが向上しますが、preforkMPM を使用する場合は256を超えることは推奨されません。例18.71 MaxClients ディレクティブの使用
MaxClients 256-
MaxRequestsPerChild MaxRequestsPerChildディレクティブでは、終了前に子プロセスが処理できるリクエストの最大数を指定できます。以下の形式を取ります。MaxRequestsPerChild number数値を0に設定すると、要求数が無制限になります。MaxRequestsPerChildディレクティブは、有効期限の長いプロセスがメモリーリークを引き起こさないようにするために使用されます。例18.72 MaxRequestsPerChild ディレクティブの使用
MaxRequestsPerChild 4000-
MaxSpareServers MaxSpareServersディレクティブでは、スペア子プロセスの最大数を指定できます。以下の形式を取ります。MaxSpareServers numberこのディレクティブは、preforkMPM のみによって使用されます。例18.73 MaxSpareServers ディレクティブの使用
MaxSpareServers 20-
MaxSpareThreads MaxSpareThreadsディレクティブを使用すると、スペアサーバースレッドの最大数を指定できます。以下の形式を取ります。MaxSpareThreads number数値 はMinSpareThreadsおよびThreadsPerChildの合計値以上である必要があります。このディレクティブは、workerMPM だけによって使用されます。例18.74 MaxSpareThreads ディレクティブの使用
MaxSpareThreads 75-
MinSpareServers MinSpareServersディレクティブでは、予備の子プロセスの最小数を指定できます。以下の形式を取ります。MinSpareServers number数 値が大きいと、サーバーに大量の処理負荷が発生する可能性があることに注意してください。このディレクティブは、preforkMPM のみによって使用されます。例18.75 MinSpareServers ディレクティブの使用
MinSpareServers 5-
MinSpareThreads MinSpareThreadsディレクティブを使用すると、スペアサーバースレッドの最小数を指定できます。以下の形式を取ります。MinSpareThreads numberこのディレクティブは、workerMPM だけによって使用されます。例18.76 MinSpareThreads ディレクティブの使用
MinSpareThreads 75-
StartServers StartServersディレクティブでは、サービスの起動時に作成する子プロセスの数を指定できます。以下の形式を取ります。StartServers number子プロセスは現在のトラフィックの負荷に応じて動的に作成され、終了されるため、通常はこの値を変更する必要はありません。例18.77 StartServers ディレクティブの使用
StartServers 8-
ThreadsPerChild ThreadsPerChildディレクティブを使用すると、子プロセスが作成できるスレッド数を指定できます。以下の形式を取ります。ThreadsPerChild numberこのディレクティブは、workerMPM だけによって使用されます。例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 つのセクションが含まれます。このセクションは、VirtualHost セクション内にあります。~]# 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 行を以下のように編集します。すべての VirtualHost セクションに対してこのアクションを繰り返します。ファイルを保存してから閉じます。
# 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 - すべての SSLProtocol ディレクティブが以下のように変更したことを確認します。この手順は、デフォルトの VirtualHost セクションが複数の場合に特に重要になります。
~]# grep SSLProtocol /etc/httpd/conf.d/ssl.conf SSLProtocol all -SSLv2 -SSLv3 - 以下のように 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
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 443443は、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,uServer-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/aliasaliasがデフォルトの 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オプションは、証明書の名前(-tCT,,)を設定します。これは、証明書が 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を設定します。これにより、システムの起動時にパスワードを手動で入力する必要がなくなります。ソフトウェアトークンは NSS データベースに存在しますが、証明書を含む物理トークンを使用することもできます。~]# vi /etc/httpd/conf.d/nss.conf NSSPassPhraseDialog file:/etc/httpd/password.conf - NSS データベースに含まれる SSL サーバー証明書が RSA 証明書である場合は、NSSNickname パラメーターのコメントを解除し、上記の手順 4 で示されたニックネームに一致するようにします。
~]# vi /etc/httpd/conf.d/nss.conf NSSNickname Server-CertNSS データベースに含まれる SSL サーバー証明書が ECC 証明書である場合は、NSSECCNickname パラメーターのコメントを解除し、上記の手順 4 で示されたニックネームに一致するようにします。~]# vi /etc/httpd/conf.d/nss.conf NSSECCNickname Server-CertNSSCertificateDatabase パラメーターがコメント解除され、上記の手順 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の形式の行を追加します。上記の手順 6 で NSS セキュリティーデータベースに適用したパスワードでパスワードを置き換えます。internal:password- 適切な所有権とパーミッションを
/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 つのセクションが含まれます。このセクションは、VirtualHost セクション内にあります。~]# 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- NSSProtocol 行を以下のように編集します。すべての VirtualHost セクションに対してこのアクションを繰り返します。
# SSL Protocol: NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2 - Listen 8443 行を以下のように編集します。
Listen 443 - デフォルトの VirtualHost _default_:8443 行を以下のように編集します。デフォルト以外の他のすべての仮想ホストセクション (存在する場合) を編集します。ファイルを保存してから閉じます。
VirtualHost _default_:443 - すべての NSSProtocol ディレクティブが以下のように変更したことを確認します。この手順は、VirtualHost セクションが複数の場合に特に重要になります。
~]# 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 - 以下のように Apache デーモンを再起動します。セッションが中断されることに注意してください。
~]# service httpd restart
手順18.6 mod_nss での SSL および TLS プロトコルのステータスのテスト
root で openssl パッケージをインストールします。
~]# yum install openssl
openssl s_client -connect hostname:port -protocol
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 で以下のコマンドを実行してこれを実行できます。
~]# mv key_file.key /etc/pki/tls/private/hostname.key
~]# mv certificate.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 のホームページです。