私は Apache サーバー構成の基本を学ぼうとしており、Apache 上の異なるスコープ間での SSL ディレクティブの有効性について疑問に思っています。
それらの指令;
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...
どこに配置できますか? VirtualHost セクションのみですか? これらをグローバル スコープに配置すると、機能しますか?
この質問が何らかの形で文脈から外れている場合は申し訳ありませんが、Apache に関してまだいくつかの包括的な問題があります :)
答え1
Apacheの世界へようこそ!最初のレッスンは、優れたドキュメントの読み方を学ぶことです。Apacheのドキュメントでは、すべてのディレクティブにコンテクストSyntax:
サーバーの構成ファイルのどこでディレクティブが有効であるかを示すセクション。これは、および行のすぐ下にありますDefault:
。
サーバー設定これは、ディレクティブがサーバー構成ファイル (例:
httpd.conf
) 内では使用できるが、<VirtualHost>
またはコンテナ内では使用できません。ファイル内ではまったく<Directory>
許可されません 。.htaccess
仮想ホストこのコンテキストは、ディレクティブが
<VirtualHost>
サーバー構成ファイル内のコンテナー内に表示される可能性があることを意味します。ディレクトリこのコンテキストで有効であるとマークされたディレクティブは、構成セクションで概説 されている制限に従って、サーバー構成ファイル内の
<Directory>
、、、、およびコンテナー内<Location>
で使用できます。<Files>
<If>
<Proxy>
.htaccessディレクティブがこのコンテキストで有効な場合、それはディレクトリごとの .htaccess ファイル内に出現できることを意味します。ただし、現在アクティブなオーバーライドによっては、処理されない場合があります。
とSSLEngine
、SSLCertificateFile
、SSLCertificateKeyFile
コンテキストは、サーバー構成と仮想ホストです。つまり、サーバー全体に対してこれらを指定し、サーバーごとにこのデフォルト構成を上書きすることもできます<VirtualHost>
。
のSSLRequireSSL
指令一方、ディレクトリと .htaccess のコンテキストでは合法です。つまり、これをディレクトリに配置することで、このディレクトリにサービスを提供する HTTP のみの仮想ホストが存在する場合でも、非 TLS 接続を許可しないように指定できます。
しかし、今の時代はTLSで全てを保護する必要があるので、SSLRequireSSL
不要です。すべてのHTTPをHTTPSにリダイレクトし、HTTP 厳格なトランスポートセキュリティ(HSTS)ポリシー(RFC 6797)。