◀ 19.

【Laravelエラー】Invalid request (Unsupported SSL request)

▶
この記事の要点
  • Laravel php artisan serve 起動後の Invalid request (Unsupported SSL request)
  • 原因: HTTPS (https://localhost:8000) でアクセスしている。artisan serve は HTTP のみ対応
  • 対処: URL を http://localhost:8000 に変える
  • 本番想定で HTTPS を試したいなら Apache / nginx の SSL 設定 or Laravel Valet を使う

 

エラー内容

Invalid request (Unsupported SSL request)

 

発生条件/原因/対処法

HTTP専用の開発サーバーとHTTPS用のTLS終端は別であり、Laravelの設定やDebugbar追加でTLSは有効にならない説明図

以下のコマンドを実行して起動した後、何かしらのURLにアクセスした後に発生するエラー。

php artisan serve

 

ローカル環境の場合、URLが意図せずhttpsになっていないかどうか確認すること。

自分のローカルHTTP開発サーバーを確認する場合だけ、起動時に表示されたhttpのURLでアクセスします。本番サイトをHTTPへ落とす対処ではありません。

 

旧記事のDebugbar・HTTPSフラグ例について

以下の旧参考例は、このTLSエラーの解決策として実行しないでください。 DebugbarはHTTPサーバーへTLSを追加しません。requestのHTTPS値を変更しても、証明書・秘密鍵・TLS待受は設定されません。古い構成の記録としてコードを残しますが、新しい環境に追加する推奨ではありません。

旧参考: Barryvdh\Debugbar\ServiceProviderの導入コマンド。

composer require barryvdh/laravel-debugbar --dev

 

旧参考: AppServiceProvider内でリクエストのHTTPS値を変更する例。これでPHPのHTTP待受がHTTPS対応になるわけではありません。プロキシ配下では信頼するプロキシと転送ヘッダの設定を対象環境に合わせて確認します。

public function register()
{
    //check that app is local
    if (!$this->app->isLocal()) {
        //else register your services you require for production
        $this->app['request']->server->set('HTTPS', true);
    }
}

 

旧参考: AppServiceProvider内でリクエストのHTTPS値を変更する例。これでPHPのHTTP待受がHTTPS対応になるわけではありません。プロキシ配下では信頼するプロキシと転送ヘッダの設定を対象環境に合わせて確認します。

public function register()
{
    if ($this->app->isLocal()) {
        $this->app->register('Barryvdh\Debugbar\ServiceProvider');
    } else {
        $this->app['request']->server->set('HTTPS', true);
    }
}

HTTPの疎通とHTTPSの必要性を分ける

次のコマンドは自分のローカル開発環境でのみ実行する確認例です。Laravelのartisan serveはPHPの組み込みHTTPサーバーを起動します。ポート番号は起動時の表示へ合わせてください。

php artisan serve --host=127.0.0.1 --port=8000
curl -I http://127.0.0.1:8000/

HTTPでアプリへ到達できるなら、DBやDebugbarを変える前に、ブラウザのURL、HTTPSへのリダイレクト、アプリ側のURL生成を確認します。curlでHTTPを確認できても、ブラウザではHTTPSへ自動変更される場合があります。検証用ホストの設定を確認し、本番ホストのHSTSやブラウザ全体の安全機能を無効にしないでください。

ローカルでもHTTPSが必要な場合

証明書付きのWebサーバーや開発用TLSプロキシでHTTPSを受け、構成に応じてPHPアプリへ渡します。TLS終端、URL生成、Cookieのsecure設定を分けて確認してください。証明書の検証エラーと、HTTP待受へTLSを送ったエラーは別です。PHP組み込みサーバーは本番公開用ではありません。

公式資料: PHP組み込みWebサーバー、Laravel ServeCommandの起動処理(2026年10月確認)。

子ページ

子ページはありません

同階層のページ
  1. SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost'
  2. Add [~] to fillable property to allow mass assignment on [App\~].
  3. PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in ~
  4. Changing columns for table "~" requires Doctrine DBAL; install "doctrine/dbal"
  5. MethodNotAllowedHttpException No message
  6. Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
  7. production.ERROR: No application encryption key has been specified.
  8. Dotenv values containing spaces must be surrounded by quotes.
  9. Laravel \ Socialite \ Two \ InvalidStateException
  10. The page has expired due to inactivity. Please refresh and try again.
  11. Failed to clone https://github.com/symfony/thanks.git via https, ssh protocol
  12. Illegal offset type
  13. Cannot access protected property Illuminate\Http\Request::$...
  14. Emitted value instead of an instance of Error
  15. 画像保存時にInternal Server Error
  16. Failed to authenticate on SMTP server with username ...
  17. PostTooLargeException
  18. Database hosts array is empty.
  19. Invalid request (Unsupported SSL request)
  20. does not comply with psr-4 autoloading standard. Skipping.
  21. MySQLのSTR_TO_DATE関数を使用するとnullが返却される問題