25

OS: Ubuntu12.0464ビット

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
  • [curl] SSL:はい
  • SSLバージョン:OpenSSL / 1.0.1
  • openssl:

    OpenSSLサポート:有効

    OpenSSLライブラリバージョンOpenSSL1.0.12012年3月14日

    OpenSSLヘッダーバージョンOpenSSL1.0.12012年3月14日

はい、httpページは問題なく機能します。

何か案は?

4

4 に答える 4

45

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

SSL暗号化はサポートしていません。プレーンHTTPリクエスト用です。openssl拡張機能と機能のサポートは関係ありません。ストリームラッパーを介してリクエストを受け入れたり、レスポンスを送信したりすることはありません。

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

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

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

于 2012-10-18T03:18:55.097 に答える
4

前回の更新から3年が経ちました。これが私が2021年にmacOSでそれを動作させた方法です(マリオの答えの拡張として):

# Install stunnel
brew install stunnel

# Find the configuration directory
cd /usr/local/etc/stunnel

# Copy the sample conf file to actual conf file
cp stunnel.conf-sample stunnel.conf

# Edit conf
vim stunnel.conf

次のように変更stunnel.confします:(他のすべてのオプションは削除できます)

; **************************************************************************
; * Global options                                                         *
; **************************************************************************

; Debugging stuff (may be useful for troubleshooting)
; Enable foreground = yes to make stunnel work with Homebrew services
foreground = yes
debug = info
output = /usr/local/var/log/stunnel.log

; **************************************************************************
; * Service definitions (remove all services for inetd mode)               *
; **************************************************************************

; ***************************************** Example TLS server mode services

; TLS front-end to a web server
[https]
accept = 443
connect = 8000
cert = /usr/local/etc/stunnel/stunnel.pem
; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SChannel
; Microsoft implementations do not use TLS close-notify alert and thus they
; are vulnerable to truncation attacks
;TIMEOUTclose = 0

これは、ポート443でHTTPS / SSLを受け入れ、stunnelのデフォルトの偽の証明書を使用してポート8000​​で実行されているローカルWebサーバーに接続します/usr/local/etc/stunnel/stunnel.pem。ログレベルはでinfoあり、ログ出力はに書き込まれ/usr/local/var/log/stunnel.logます。

stunnelを開始します:

brew services start stunnel # Different for Linux

Webサーバーを起動します。

php -S localhost:8000

https://localhost:443これで、Webサーバーにアクセスできます:スクリーンショット

証明書エラーが発生するはずであり、ブラウザの警告をクリックする必要がありますが、開発のために、HTTPSリクエストでローカルホストにアクセスできるようになります。

于 2021-08-29T10:48:44.170 に答える
2

私は最近nginxとLaravelを学んでいますが、このエラーは何度も発生しています。nginxをLaravelと同時にオペレーティングシステムのSSL設定に合わせる必要があるため、診断は困難です(自己署名証明書を作成していると仮定します)。

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

私の場合、どこかでHTTPSを宣言しているのに、 HTTPphp artisan serveでしか機能しないという問題が発生し続けました。

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

誰にでも、 HTTP/HTTPSがどこでどのように使用されているかを確認することをお勧めします。

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

于 2018-06-09T19:51:50.353 に答える
0

Ngrokを使用する

  1. 次のようにサーバーのポートを公開します。 ngrok http <server port>

  2. ngrokの安全なパブリックアドレス(httpsのあるアドレス)で閲覧します。

注:それは魅力のように機能しますが、インターネットが必要であり、より良い推奨事項を歓迎するため、やり過ぎのようです。

于 2021-09-06T08:08:55.157 に答える