質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

解決済

ApacheでIP直打ちのHTTPSアクセスを拒否したい

mahomaho
mahomaho

総合スコア129

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

2回答

0評価

0クリップ

9044閲覧

投稿2019/12/28 18:05

編集2019/12/29 14:20

IP直打ちでのアクセスを拒否したいのですが、
下記の設定時にhttps://IPアドレスでアクセスするとホスト名とIPどちらで叩いても接続できてしまいます。

<VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost>

ホスト名で叩いた際も下のディレクティブに引っかかってしまう理由はなんでしょうか?
私の認識では「上から順にマッチしたら以下は評価しない」と思ったのですが。。

試したこと

下記はうまく行きますが、
LB配下のサーバを複製して運用したいためIPアドレス指定は避けたい状況です。

正しく403が返される

<VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName IPアドレス <Location /> Order deny,allow Deny from all </Location> </VirtualHost>

理由を教えていただきたいのと、
代替案は何かありますでしょうか?

ちなみに下記では質問者様に同様の疑問が残ったまま解決していないようでした。
https://teratail.com/questions/117089

追記

このように逆にするとホストとIPどちらで叩いても拒否されてしまいます
※正確には拒否(403)ではなく「ERR_SSL_PROTOCOL_ERROR」となり表示されない

<VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost> <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost>

ServerNameが効いていないということなんでしょうか。。
確かにServerName (ホスト名)ServerName (ホスト名2)に変えてもこのディレクティブが適用されているようです。

試したパターン

#IP直Chromeで証明書エラー(無視して表示できるオプションもでない) → NG #ドメインアクセス時Chromeで証明書エラー(無視して表示できるオプションもでない) → NG <VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost> <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> ###################################################### #IP直はChromeで証明書エラーだが(無視して表示できるオプションが出る)200(ドキュメントルート表示) → NG #ドメインアクセス時は200(ドキュメントルート表示) → OK <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost> ###################################################### #IP直Chromeで証明書エラー(無視して表示できるオプションもでない) → NG #ドメインアクセス時Chromeで証明書エラー(無視して表示できるオプションもでない) → NG <VirtualHost *:443> ServerName (IPアドレス) <Location /> Order deny,allow Deny from all </Location> </VirtualHost> <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> ###################################################### #IP直は403 → OK #ドメインアクセス時は200(ドキュメントルート表示) → OK <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName (IPアドレス) <Location /> Order deny,allow Deny from all </Location> </VirtualHost>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。