一部のディレクトリに対してSSLを使用したアクセスのみを許可するようにApacheを制限します


34

SSLを使用してのみアクセスする必要があるいくつかのサービスをホストするSSL証明書を備えたApache 2.2サーバーがあります。

例:https://myserver.com/topsecret/は許可する必要がありますが、http://myserver.com/topsecret/は拒否するか、理想的にはhttpsにリダイレクトする必要があります。 http://myserver.com/publicにはこの制限はなく、httpまたはhttpsを使用して機能する必要があります。
httpの許可/拒否の決定は最上位ディレクトリで行われ、その下のすべてのコンテンツに影響します。

この方法でアクセスを制限するために、Apache構成に配置できるディレクティブはありますか?

回答:


38

SSLRequireSSLのディレクティブは、あなたが探しているものです。

の内部<VirtualHost>、または仮想ホストを使用していない場合はトップレベルで:

<Directory /topsecret>
  SSLRequireSSL
</Directory>

または.htaccess

SSLRequireSSL

1
サーバー障害へようこそ!回答には、コンテンツへのポインタではなく、コンテンツが含まれることが本当に望ましいです。これは理論的には、しかし、質問に答えることがあり、望ましいだろう、ここでの答えの重要な部分を含めるようにして、参照用のリンクを提供します。ありがとうございました!
クリスS

8
OK、5年前の投稿を例で更新しました:)
トーマス

1
5歳であろうとなかろうと、理由は、あなたが指しているリンクが消えて、後で情報を探しにやってくる誰かにとってあなたの答えがほとんどまたは完全に役に立たなくなるかもしれないということです。だから私は実際にあなたの卑劣なコメントに投票した(正直な)が、答えが有用であり続けるためには答えが何らかの文脈を持たなければならないことにも完全に同意する。特に正しい答えとしてマークされているので。
クレイグ

SO / SFコミュニティは、ジャスト・ア・リンクやその当時の「lmgtfy」の回答についてそれほど厳しかったとは思わない。しかし、私は同意します。遡及編集はいつでも意味があります。
トーマス

どのディレクティブファイルにそのディレクティブステートメントを追加しますか?
ダンカーター

8

グローバル構成では、次を使用できます。

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !on
   RewriteRule .* https://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L,QSA]
</IfModule>

同様に、安全なディレクトリツリーの最初のディレクトリで.htaccessファイルを使用できます。

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !on
   RewriteRule .* https://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L,QSA]
</IfModule>

最後の1つは、グローバルまたは仮想ホスト構成のディレクトリディレクティブ内に配置することもできます。


HTTPをHTTPSにリダイレクトすると、特定のタイプのMiTM攻撃が可能になります。ご注意ください。
クレイグ

1

または、Apacheの構成オプションを使用するのではなく、サーバー側の言語を使用して処理を実行することもできます(サーバーの構成にアクセスできない場合)。

たとえば、PHPの場合:

if (!isset($_SERVER['HTTPS'])) {
  // put your redirect here
  header('Location: http://myserver.com/public');
}

(ただし、Microsoft IISでISAPIを使用している場合、リクエストがHTTPS経由でルーティングされていない場合、$ _ SERVER ['HTTPS']変数の値は "off"になります)



0

VirtualHostディレクティブを使用していると仮定すると、

アクセスを拒否する非SSL仮想ホストにDirectoryディレクティブを配置します。

次に、アクセスを許可するssl仮想ホストにDirectoryディレクティブを配置します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.