🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
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)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

サーバ

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

Q&A

解決済

2回答

15086閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

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)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

サーバ

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

0グッド

0クリップ

投稿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>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

https://IPアドレスでアクセスすると

IPアドレスをコモンネームに入れている場合を除けば、そもそもコモンネーム不一致でSSL接続できませんので、Apache側で対応するまでもないかもしれません。

投稿2019/12/28 21:57

maisumakun

総合スコア145973

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/29 03:13

ブラウザで確かにエラーが出ますが、「無視して続行」をすると見れてしまいました。。
guest

0

ベストアンサー

一致するバーチャルホストが存在しない場合はデフォルトサーバー(最初のVirtualHost)が応答を返すので、ServerName Anyの方を最初に書けばいいと思います。

httpd.conf

1<VirtualHost *:443> 2 ServerName any 3 <Location /> 4 Order deny,allow 5 Deny from all 6 </Location> 7</VirtualHost> 8 9<VirtualHost *:443> 10 ServerName www.example.com 11 DocumentRoot "/var/www/html" 12</VirtualHost>

例:ホスト名の場合は 200 OKが返る

$ curl -H 'Host:www.example.com' -I http://192.168.0.130/ HTTP/1.1 200 OK ::

例:それ以外は 403 Forbidden が返る

$ curl -H 'Host:192.168.0.130' -I http://192.168.0.130/ HTTP/1.1 403 Forbidden :: $ curl -H 'Host:192.168.0.200' -I http://192.168.0.130/ HTTP/1.1 403 Forbidden :: $ curl -H 'Host:www.example.net' -I http://192.168.0.130/ HTTP/1.1 403 Forbidden ::

投稿2019/12/28 21:22

take88

総合スコア1467

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/29 03:14

ありがとうございます。 すみません、質問時の結果が逆だったのと、改めていただいた設定を行った結果を追記しました
take88

2019/12/29 12:30

ERR_SSL_PROTOCOL_ERROR は SSLの設定がおかしい場合のエラーです。 LB配下のサーバーということですが、SSL/TLS証明書は どこでインストールする予定ですか? 1.LBに証明書をいれるなら、サーバーの直アクセスの際に、SSLのエラーが出るのは仕方ないと思います。直アクセスの場合は、ブラウザでエラーを無視してアクセスしてみてください。 2.そうじゃなくて、もしも各サーバーにSSL証明書をインストールするなら、証明書が正しく設定されてる確認してください。
退会済みユーザー

退会済みユーザー

2019/12/29 14:05

>SSL/TLS証明書は どこでインストールする予定ですか? 証明書はWEBサーバ側にインストールしています(LBはDSR方式) 追記記載の設定状態から上のディレクティブを削除するとドメインを叩いた際に証明書エラーが出ずに正しく表示ができます。 一方ドメイン直叩きでは証明書エラーが出ますが、同様に表示はできてしまいます。 この状況的に証明書の設定には問題なさそうで、 追記の設定状態で、なぜドメインアクセス時に下のディレクティブに引っかからないのかが不思議です。。
take88

2019/12/29 16:52

> なぜドメインアクセス時に下のディレクティブに引っかからないのかが不思議です それは、HTTP通信する以前に、SSL でエラーになってるからですね。 証明書の問題を解決すれば、期待通りに動くと思います。 ちなみに、証明書のコモンネームと、ServerNameは一致してますか? あと、SNIに対応した証明書じゃないとエラーになる気がしますがその辺どうでしょうか。
退会済みユーザー

退会済みユーザー

2019/12/29 18:11

>それは、HTTP通信する以前に、SSL でエラーになってるからですね。 なるほどですね。 証明書のコモンネームとServerNameは一致していますが、証明書がSNIに対応していないと思われます。 長々とありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問