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

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

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

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

Q&A

1回答

15148閲覧

apacheの応答時間・タイムアウトエラー

tk_flavor

総合スコア104

Apache

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

0グッド

0クリップ

投稿2016/08/10 08:24

編集2022/01/12 10:55

クライアント証明書が入ったWebサイトにhttp接続した際
「サイトからの応答時間が長すぎます。」と表示されます

今はhttp接続した時に強制的にhttpsに接続させる設定はしていません

この「サイトからの応答時間が長すぎます。」のメッセージを出さないようにするためには
ErrorDocumentでエラーページ見せるようにしようかと思っているのですが
ssl_errorログにhttpステータスが表示されませんので、ErrorDocumentの設定ではうまく機能しないのではと
考えています
ssl_errorログには下記のようなログが出ています

Re-negotiation handshake failed: Not accepted by client

そもそも、「サイトからの応答時間が長すぎます。」の制御をapache側設定でどうにかなるのでしょうか?


クライアント証明書設定はssl.confに記述しています

■/etc/httpd/conf.d/ssl.conf

SSLInsecureRenegotiation off <Location /> SetEnv force-proxy-request-1.0 1 SetEnv proxy-nokeepalive 1 SSLRequireSSL SSLVerifyClient optional #SSLVerifyClient none SSLRequire %{SSL_CLIENT_S_DN_O} eq "*****." or%{REMOTE_ADDR}=~****** or%{REMOTE_ADDR}=~*****/ or%{REMOTE_ADDR}=~*****/ </Location> <Directory ""> # Options Indexes FollowSymLinks # AllowOverride All #add Order deny,allow Allow from all </Directory> ###サーバの公開鍵 SSLCACertificateFile /usr/local/ssl/CA/CA.key ###失効ファイル SSLCARevocationFile /etc/pki/exampleCA/crl.pem

iptablesでは、下記のように活かしています

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

netstatでも80はListenしています

[root@**** ~]# netstat -atlnp|grep ":80"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5477/httpd

httpd -Sコマンドを実行すると下記のように443のみのvhost設定しかしていません

VirtualHost configuration:
wildcard NameVirtualHosts and default servers:
default:443 ..***.jp (/etc/httpd/conf.d/ssl.conf:81)
Syntax OK

  • サーバ内でcurlコマンドを実行しました

[root@*** conf.d]# curl -vvv http://localhost

  • About to connect() to localhost port 80 (#0)
  • Trying 127.0.0.1... connected
  • Connected to localhost (127.0.0.1) port 80 (#0)

GET / HTTP/1.1
User-Agent:
Host: localhost
Accept: /

< HTTP/1.1 302 Found
<
< Server: Apache
< X-Frame-Options: DENY

  • iptablesの内容

iptables -nvL

Chain INPUT (policy ACCEPT 551K packets, 43M bytes)
pkts bytes target prot opt in out source destination
153M 57G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
242K 23M ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0
583K 37M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
351 21052 ACCEPT tcp -- * * 192.168.. 0.0.0.0/0 state NEW tcp dpt:22
242K 15M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
7971K 465M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 144M packets, 96G bytes)
pkts bytes target prot opt in out source destination

書く順としては、*filter内容を記述してから、sourceIPでのポリシーを記載し、

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p ah -j ACCEPT
-A INPUT -i lo -j ACCEPT

最後に下記を記載しています

-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

ご教示のほどよろしくお願い致します

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

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

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

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

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

kunai

2016/08/10 08:30

サイトの設定をされている.confファイルに SSLInsecureRenegotiation on は記載されていますか?
tk_flavor

2016/08/10 08:39

ご回答ありがとうございます SSLInsecureRenegotiation on を一旦記述して確認しましたが 同じエラーログが出ます http://qa.itmedia.co.jp/qa8831426.html のサイトを見ると offが効力あるとの事で、現在はoffにしています
TaichiYanagiya

2016/08/12 10:24

HTTP 接続で Connection Timeout になっているのではないでしょうか。 HTTPS では接続できるのですか? Apache httpd のバージョンと、具体的な設定を教えてください。
tk_flavor

2016/08/12 10:50

apacheバージョンは Apache/2.2.15です http接続すると、「応答時間が長い。タイムアウトとなりました」表示になります httpsしか接続出来ないようにプログラム上で設定しています
tk_flavor

2016/08/12 10:51

設定はssl.confにクライアント証明書の設定が入っています 設定内容は、質問箇所に追記します
TaichiYanagiya

2016/08/12 12:10

「httpsしか接続出来ないようにプログラム上で設定」とは具体的にどのようにしているのですか? Connection Refused ではなく Connection Timeout なので、80番ポートへの接続を iptables で DROP (もしくは経路上のファイアーウォールで同様のフィルタリング)していませんでしょうか。
tk_flavor

2016/08/15 01:36 編集

うまく、改行など出来ませんでしたので、 質問欄に この回答・加筆を記載します iptablesでは80を活かしています netstatでも80はListenしています httpd httpd -Sコマンドを実行すると下記のように443のみのvhost設定としています
tk_flavor

2016/08/15 02:23

サーバ内でlocalhostでコマンドを実行した結果を質問した箇所に記載ます ステージング・開発環境ですと、httpd -Sすると *:80 is a NameVirtualHost が表示されまして、http接続するとページ表示されます 本番と開発との違いは80ポートでvhostを入れているかいないかだと思いますので、開発で80のvhostを削除してから同じ事が再現されるか確認してみます
tk_flavor

2016/08/15 02:46

すみません。 httpsしか接続出来ないようにプログラム上で設定しているのでは?の仮定で話ていましたが、そういった制御はしていないようです。 Locationヘッダは下記になります Location: /login?url=%2F
TaichiYanagiya

2016/08/15 03:03

情報ありがとうございます。 https にリダイレクトしているわけではないのですね。
guest

回答1

0

現状、サーバー内から「curl http://127.0.0.1/」で接続できるが、外部からは(リダイレクト先ではなく、単純に最初の URL に) Connection Timeout となるということだと思います。
確認ですが、外部から HTTP でアクセスしたときは access_log に何も記録されないのですよね?

iptables では 80/TCP を許可していますが、DROP や REJECT ルールの前に設定しているか確認ください。
iptables -nvL の出力があるとわかると思います。

投稿2016/08/15 03:03

TaichiYanagiya

総合スコア12141

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

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

tk_flavor

2016/08/15 03:24

iptablesの設定内容については、質問箇所に追記しました
TaichiYanagiya

2016/08/15 03:39

ありがとうございます。iptables は問題ないですね。DROP, REJECT がないので全許可だと思います。 80/TCP のパケットがカウントされていますので、外部からアクセスがあると思うのですが ... access_log はどうなっていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問