web-dev-qa-db-ja.com

openSSLがPHP組み込みのWebサーバーで動作しない

OS: Ubuntu 12.04 64ビット

PHPバージョン: 5.4.6-2〜precise + 1

ビルトインWebサーバー(php5 -S localhost:8000)を介して書き込んでいるhttpsページをテストすると、Firefox(16.0.1)は「ロードの問題:接続が中断されました」と表示し、端末は「:: 1 :37026無効な要求(サポートされていないSSL要求)」。

phpinfo()は私に伝えます:

  • 登録されたストリームソケットトランスポート:tcp、udp、unix、udg、ssl、sslv3、tls
  • [カール] SSL:はい
  • SSLバージョン:OpenSSL/1.0.1
  • openssl:

    OpenSSLサポート:有効

    OpenSSLライブラリバージョンOpenSSL 1.0.1 2012年3月14日

    OpenSSLヘッダーバージョンOpenSSL 1.0.1 2012年3月14日

はい、httpページは問題なく動作します。

何か案は?

20
user1755025

組み込みのWebサーバーシムのマニュアルセクションを参照してください。
http://php.net/manual/en/features.commandline.webserver.php

SSL暗号化はサポートしていません。プレーンなHTTPリクエスト用です。 openssl拡張子と関数のサポートは無関係です。ストリームラッパーを介して要求を受け付けたり、応答を送信したりすることはありません。

SSLをSSLで実行したい場合は、stunnelラッパーを試してください。

php -S localhost:8000 &   
stunnel3 -d 443 -r 8080  

とにかく、いじるだけです。

36
mario

私はnginxとLaravelを最近習得していて、このエラーが何度も出てきました。nginxをLaravelおよびオペレーティングシステムのSSL設定も同時に行います(自己署名証明書を作成している場合)。

Windowsを使用している場合、SSL証明書を処理するときにUNIXのキャリッジリターンと戦わなければならないため、さらに困難になります。場合によっては手順を正しく実行できても、証明書の検証の問題によって台無しになることがあります。トリックは、UbuntuまたはMacで証明書を作成し、自分にメールで送信するか、Linuxサブシステムを使用することです。

私の場合、私は[〜#〜] https [〜#〜]をどこかで宣言する問題に遭遇し続けましたが、php artisan serve[〜#〜] http [〜#でのみ機能します〜]

SSLが正常に接続された後、このInvalid request (Unsupported SSL request)エラーが再び発生しました。 Axiosを使用してPOST https://へのリクエストを行っていたことがわかりました。これをPOST http://に変更すると、修正されました。

誰にでも私の推奨は、場所と方法 HTTP/HTTPSが使用されていることを確認することです。

教科書の定義はおそらくphp artisan serveのようなもので、HTTPでのみ機能しますが、基礎となるSSLレイヤーが必要です。

2
agm1984