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

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

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

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

2回答

3169閲覧

PHP WEBSOCKET(WRENCH)でSSL通信された実績がある人いますか?

yogohisashi

総合スコア8

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2017/07/26 07:53

###前提・実現したいこと
phpでwebsocketサーバーを作成しております。
以下のgithubを参考に作成しておりますが、
wssの通信が正常に機能しません。(通常のwsの通信は問題なし)

https://github.com/varspool/Wrench

ここに質問したいことを詳細に書いてください
どなたか、上記githubを使ってwss通信を実現されている方は
いらっしゃいますか?

###発生している問題・エラーメッセージ
自己証明書を発行して、ie11で接続テストしてみましたが、以下のメッセージが出力されます。

info: Wrench\ConnectionManager: Wrench\Connection: 127.0.0.1:53732 (4ad008a5a3198a8f267541fc6237ba7db90bf6cd42e6b33ba4702df94f762b4a034b0cefd570fb5e454c26096d7b6d17dc8765cd0def8300ed90d8b60507a116): Connected warning: Wrench\ConnectionManager: Wrong input arguments: exception 'InvalidArgumentException' with message 'Invalid request line' in C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\Protocol\Protocol.php:746 Stack trace: #0 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\Protocol\Protocol.php(458): Wrench\Protocol\Protocol->getRequestHeaders('G') #1 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\Connection.php(223): Wrench\Protocol\Protocol->validateRequestHandshake('G') #2 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\Connection.php(206): Wrench\Connection->handshake('G') #3 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\Connection.php(402): Wrench\Connection->onData('G') #4 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\ConnectionManager.php(243): Wrench\Connection->process() #5 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\ConnectionManager.php(168): Wrench\ConnectionManager->processClientSocket(Resource id #27) #6 C:\pleiades\xampp\htdocs\wrench_2\lib\Wrench\Server.php(198): Wrench\ConnectionManager->selectAndProcess() #7 C:\pleiades\xampp\htdocs\wrench_2\examples\server_ssl.php(57): Wrench\Server->run() #8 {main}

###該当のソースコード
pemFileには、秘密鍵と自己認証がセットになったファイルを読ませています。
pemPassphrase は null です。

$serverUrl = 'wss://127.0.0.1:443/'; $server = new \Wrench\Server($serverUrl, array( 'connection_manager_options' => array( 'socket_master_options' => array( 'server_ssl_local_cert' => $pemFile, 'server_ssl_passphrase' => $pemPassphrase, 'server_ssl_allow_self_signed' => true, 'server_ssl_verify_peer' => false ) ) ));

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
https://github.com/varspool/Wrench v2.0.8 を使用

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

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

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

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

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

guest

回答2

0

自己解決

回答してくれた人、ありがとうございます。
自己解決しました。

//原因
Socket.php
socketからデータを読み取る際の指定lengthが足りなかったみたいです。

//改修前
$result = fread($this->socket, 1400);

//改修後
$result = fread($this->socket, 8192);
// extremely strange chrome behavior: first frame with ssl only contains 1 byte?!
if(strlen($result) === 1)
{
$result .= fread($this->socket, 8192);
}

参考サイト
https://github.com/varspool/php-websocket/blob/master/server/lib/WebSocket/Socket.php

投稿2017/07/27 01:44

yogohisashi

総合スコア8

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

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

0

php

1$serverUrl = 'wss://127.0.0.1:443/'; 2$server = new \Wrench\Server($serverUrl, array( 3 'connection_manager_options' => array( 4 'socket_master_options' => array( 5 'ssl_cert_file' => $pemFile, 6 'ssl_passphrase' => $pemPassphrase, 7 'ssl_allow_self_signed' => true 8 ) 9 ) 10));

じゃなかろうか・・・?PHPただの一行も書いたことない勢の回答で申し訳ないが。

/lib/Server.php
/lib/ConnectionManager.php
/lib/Socket/ServerSocket.php:特に72行目
/lib/Util/Configurable.php

投稿2017/07/26 16:12

編集2017/07/26 16:13
yumetodo

総合スコア5850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問