目次

調査結果

エラーの通り Apache のステータスコード(レスポンス)は 413 なのですが、このコードには初めて遭遇した気がします。

要はクライアントからのリクエスト要求(サイズ)が大きすぎるということで、Apache のエラーログにも以下の内容が出力されています。

request body exceeds maximum size (131072) for SSL buffer

許容しているサイズは 131072 なので 128KB(1024 * 128)ですね。

これでは少し大きなサイズのファイルをアップロードしただけで余裕でオーバーしてしまいます。

ちなみに、アップロードの処理は PHP で動作させているのですが、PHP の設定は以下の通りです。

  • 1 ファイル 5MB まで
  • 1 回の POST のサイズを 20MB まで

php.ini だと以下の設定ですね。

upload_max_filesize = 5M
post_max_size = 20M

クライアント証明書を使わない SSL(https)通信では問題なく大きなファイルもアップロードできているので、やはりこのエラーに遭遇するのはクライアント証明書を使ってアクセスしたときに限定されます。

解決方法

Apache のエラーログの内容からもわかる通り、SSLRenegBufferSize がデフォルトで 131072 になっているので、ここを 20MB に変更します。

SSLRenegBufferSize 20971520
参考

ディレクトリまたはロケーションブロックでSSLVerifyClientを使用するなど、ロケーションごとにSSL再ネゴシエーションが必要な場合、新しいSSLハンドシェイクが実行できるようになるまで、mod_sslはHTTP要求本体をメモリにバッファリングする必要があります。このディレクティブを使用して、このバッファに使用されるメモリ量を設定できます。
(google翻訳)

SSLRenegBufferSize Directive

設定したら、Apache を再起動してエラーにならないことを確認します。

Tips記事一覧

新着記事一覧です。

関連記事一覧

「Apacheのクライアント証明書を使ったアクセスで「413 Request Entity Too Large」」に関連した記事一覧です。

TOP