Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MWE of WebSocket over TLS #1

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,17 @@ public function __construct(
protected function doHandshake()
{
$connection = $this->getConnection();
$buffer = $connection->read(2048);
$request = $this->getRequest();

if (true === $connection->getSocket()->isSecured()) {
$connection->enableEncryption(true, $connection::ENCRYPTION_TLS);
}

$buffer = $connection->read(2048);

var_dump($buffer);
//TODO why buffer are empty when encrypted

$request = $this->getRequest();
$request->parse($buffer);

// Rfc6455.
Expand Down
6 changes: 6 additions & 0 deletions snippet/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
build:
openssl req -nodes -x509 -newkey rsa:4096 -keyout cert/key.pem -out cert/cert.crt -days 365
cat cert/cert.crt cert/key.pem >> cert/cert.pem

test:
openssl s_client -showcerts -connect 127.0.0.1:8889
31 changes: 31 additions & 0 deletions snippet/cert/cert.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFXTCCA0WgAwIBAgIJAPMI/7N4q9hbMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTYxMDA1MjExMDE4WhcNMTcxMDA1MjExMDE4WjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEArnSqECXRLau+ZW9nBq0UhReI9l8aEQYqR3Kehqd8gj+O7q1sJHWw54VF
Cez4B0oCa2F/t9ATm16wK87dnddyvNlo3ME4uEyqxfma+11j1DhIdoWYi7ceLCXi
KgwsF1VBWfuFWmRyPp/sqAIeSxe1+Da2XTr81/U2zSh8EmIzvmt0QR8TdOLR4wSG
7ya0XaLAtZtbfoDC70VX2A7sBAnvswFvvK1KgrIEzOohXICd6AteipR7QLque4kl
HHR1k2PyEAdLuKXMyXlL3I8NKIjSDQanEYmyENgslx7GNWvRr1mQb6gRp7AzC6l5
IdJQ2oegsHyyPawRs47HB8AUniaTHEO3S4X9FlSsSLEy7lbPg/RL3zGuqikj0jTA
zQU3aWO74iNb5PPkDmf+WWvS9kB7FUBrs82rESslefeHdiq/5UpKTb182qodtH+O
RayKyecfKL1U3M1hEwrJmhL+indikvOLva/PP2zhOeHCoRFdfgtNq1MlLgrlavan
O0MMkr4dmp1J2P0oV73hckpi9+zEz2PJSmdtmU/rmhhxsz/WJX9oV59p7VejqD3i
mC5Cp03UNH4+IDzrrNzUnPu7yolCbKA2Cat60FrmRLRODkyN6sVqGKenjvhF/1Kb
Q0pItTUXDzaDVf5Sl8ZX6m4DnA1jehEvxvaxv0My/7nol18vbpECAwEAAaNQME4w
HQYDVR0OBBYEFBHz7OvXAggqkW9WtLZJapLs9CgTMB8GA1UdIwQYMBaAFBHz7OvX
AggqkW9WtLZJapLs9CgTMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB
ABS+bGhaQ6tlJQj6O406GeVGNybP9YKkj1+DjvjekZrfqMpAfg3FharQeuNjFGXq
g/B1m2nJ5h1al6WTyHVlbq2ivlWHm3rcSklI7AW32XhnLn9u3xcagSWApdeY2RJX
pyl9g366Rte543ACpBy430UfYmOttQNxB+aNyPPkcCgg83QUvQM/Jv0Y5mZbYW7K
PDPAak2bZFCYuV0vji2H9uxUSJoZQPHNcj/xHcHo1ZJ7pkM7KanMD3vDR2+mhxrQ
SVj5rB6ItL7mJjgkmretFP/UiQOY7UxLEOf+lwYndSzYOxBlY4fphI+AqBNB/u9a
YgZhhHml/8/2uvxPZSqs2mrIsgowcaS1fpsA4yygnFk3GZl99hCMxnHHEOz6meco
yCPHyLcGSr9DAj+fgR9k4BvtldvdK9LLflV+OplWihD4fxPccfPOz0kwMetk8eJx
qPNHyrh4lRnPytGUb6JtSu5QnrDJ7v8+cYCfd15JgQB6XNc4naaMaJQVKaFZT8jG
dhQ6DM+Qc8yrb05rNA6EhQP4edmITnytA8JYznXESwSEOoRWfn3nOmYsEAZNEwuh
FX5RLaFOwdhXykYfzGeOvLdmOv4EIkCZRfXl3FKYlTub+GtQtUooR1nMLDMA6Y9Z
p90nAcKGx1Gmos/a631rhFm4XEX3iTksLawjCdHUuwSx
-----END CERTIFICATE-----
83 changes: 83 additions & 0 deletions snippet/cert/cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
-----BEGIN CERTIFICATE-----
MIIFXTCCA0WgAwIBAgIJAPMI/7N4q9hbMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTYxMDA1MjExMDE4WhcNMTcxMDA1MjExMDE4WjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEArnSqECXRLau+ZW9nBq0UhReI9l8aEQYqR3Kehqd8gj+O7q1sJHWw54VF
Cez4B0oCa2F/t9ATm16wK87dnddyvNlo3ME4uEyqxfma+11j1DhIdoWYi7ceLCXi
KgwsF1VBWfuFWmRyPp/sqAIeSxe1+Da2XTr81/U2zSh8EmIzvmt0QR8TdOLR4wSG
7ya0XaLAtZtbfoDC70VX2A7sBAnvswFvvK1KgrIEzOohXICd6AteipR7QLque4kl
HHR1k2PyEAdLuKXMyXlL3I8NKIjSDQanEYmyENgslx7GNWvRr1mQb6gRp7AzC6l5
IdJQ2oegsHyyPawRs47HB8AUniaTHEO3S4X9FlSsSLEy7lbPg/RL3zGuqikj0jTA
zQU3aWO74iNb5PPkDmf+WWvS9kB7FUBrs82rESslefeHdiq/5UpKTb182qodtH+O
RayKyecfKL1U3M1hEwrJmhL+indikvOLva/PP2zhOeHCoRFdfgtNq1MlLgrlavan
O0MMkr4dmp1J2P0oV73hckpi9+zEz2PJSmdtmU/rmhhxsz/WJX9oV59p7VejqD3i
mC5Cp03UNH4+IDzrrNzUnPu7yolCbKA2Cat60FrmRLRODkyN6sVqGKenjvhF/1Kb
Q0pItTUXDzaDVf5Sl8ZX6m4DnA1jehEvxvaxv0My/7nol18vbpECAwEAAaNQME4w
HQYDVR0OBBYEFBHz7OvXAggqkW9WtLZJapLs9CgTMB8GA1UdIwQYMBaAFBHz7OvX
AggqkW9WtLZJapLs9CgTMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB
ABS+bGhaQ6tlJQj6O406GeVGNybP9YKkj1+DjvjekZrfqMpAfg3FharQeuNjFGXq
g/B1m2nJ5h1al6WTyHVlbq2ivlWHm3rcSklI7AW32XhnLn9u3xcagSWApdeY2RJX
pyl9g366Rte543ACpBy430UfYmOttQNxB+aNyPPkcCgg83QUvQM/Jv0Y5mZbYW7K
PDPAak2bZFCYuV0vji2H9uxUSJoZQPHNcj/xHcHo1ZJ7pkM7KanMD3vDR2+mhxrQ
SVj5rB6ItL7mJjgkmretFP/UiQOY7UxLEOf+lwYndSzYOxBlY4fphI+AqBNB/u9a
YgZhhHml/8/2uvxPZSqs2mrIsgowcaS1fpsA4yygnFk3GZl99hCMxnHHEOz6meco
yCPHyLcGSr9DAj+fgR9k4BvtldvdK9LLflV+OplWihD4fxPccfPOz0kwMetk8eJx
qPNHyrh4lRnPytGUb6JtSu5QnrDJ7v8+cYCfd15JgQB6XNc4naaMaJQVKaFZT8jG
dhQ6DM+Qc8yrb05rNA6EhQP4edmITnytA8JYznXESwSEOoRWfn3nOmYsEAZNEwuh
FX5RLaFOwdhXykYfzGeOvLdmOv4EIkCZRfXl3FKYlTub+GtQtUooR1nMLDMA6Y9Z
p90nAcKGx1Gmos/a631rhFm4XEX3iTksLawjCdHUuwSx
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
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
f9v98jpW4L3frEVS0IePlJbQJdfA9w==
-----END PRIVATE KEY-----
52 changes: 52 additions & 0 deletions snippet/cert/key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
f9v98jpW4L3frEVS0IePlJbQJdfA9w==
-----END PRIVATE KEY-----
59 changes: 59 additions & 0 deletions snippet/client.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<input type="text" id="input" placeholder="Message…" />
<hr />
<pre id="output"></pre>

<script>
var host = 'wss://127.0.0.1:8889';
var socket = null;
var input = document.getElementById('input');
var output = document.getElementById('output');
var print = function (message) {
var samp = document.createElement('samp');
samp.innerHTML = message + '\n';
output.appendChild(samp);

return;
};

input.addEventListener('keyup', function (evt) {
if (13 === evt.keyCode) {
var msg = input.value;

if (!msg) {
return;
}

try {
socket.send(msg);
input.value = '';
input.focus();
} catch (e) {
console.log(e);
}

return;
}
});

try {
socket = new WebSocket(host);
socket.onopen = function () {
print('connection is opened');
input.focus();

return;
};
socket.onmessage = function (msg) {
print(msg.data);

return;
};
socket.onclose = function () {
print('connection is closed');

return;
};
} catch (e) {
console.log(e);
}
</script>
35 changes: 35 additions & 0 deletions snippet/client.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

require_once(dirname(__DIR__)
. DIRECTORY_SEPARATOR . 'vendor'
. DIRECTORY_SEPARATOR . 'autoload.php');


$Context = \Hoa\Stream\Context::getInstance('SnippetTLS');
$Context->setOptions([
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
]
]);

// -------------------------------

$readline = new Hoa\Console\Readline\Readline();
$client = new Hoa\Websocket\Client(
new Hoa\Socket\Client('wss://127.0.0.1:8889', 30, -1, 'SnippetTLS')
);
$client->setHost('localhost');
$client->connect();

do {

$line = $readline->readLine('> ');

if(false === $line || 'quit' === $line)
break;

$client->send($line);

} while(true);
39 changes: 39 additions & 0 deletions snippet/server.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

require_once(dirname(__DIR__)
. DIRECTORY_SEPARATOR . 'vendor'
. DIRECTORY_SEPARATOR . 'autoload.php');


$Context = \Hoa\Stream\Context::getInstance('SnippetTLS');
$Context->setOptions([
'ssl' => [
'local_cert' => __DIR__ . DIRECTORY_SEPARATOR . 'cert' . DIRECTORY_SEPARATOR . 'cert.pem',
]
]);

// -------------------------------

$websocket = new Hoa\Websocket\Server(
new Hoa\Socket\Server('wss://127.0.0.1:8889', 30, -1, 'SnippetTLS')
//new Hoa\Socket\Server('ws://127.0.0.1:8889')
);
$websocket->on('open', function (Hoa\Event\Bucket $bucket) {
echo 'new connection', "\n";

return;
});
$websocket->on('message', function (Hoa\Event\Bucket $bucket) {
$data = $bucket->getData();
echo '> message ', $data['message'], "\n";
$bucket->getSource()->send($data['message']);
echo '< echo', "\n";

return;
});
$websocket->on('close', function (Hoa\Event\Bucket $bucket) {
echo 'connection closed', "\n";

return;
});
$websocket->run();