Skip to content

Instantly share code, notes, and snippets.

@cboden
Created August 19, 2012 16:03
Show Gist options
  • Save cboden/3395757 to your computer and use it in GitHub Desktop.
Save cboden/3395757 to your computer and use it in GitHub Desktop.
No Async SSL w/ PHP
-----BEGIN CERTIFICATE-----
MIIEFzCCAv+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBqMQswCQYDVQQGEwJkZTEP
MA0GA1UECBMGSGVzc2VuMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBM
dGQxEzARBgNVBAcTCkRpbGxlbmJ1cmcxEjAQBgNVBAMTCTEyNy4wLjAuMTAeFw0x
MjA2MTYyMDE2MDhaFw0yMjA2MTQyMDE2MDhaMGoxCzAJBgNVBAYTAmRlMQ8wDQYD
VQQIEwZIZXNzZW4xITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDET
MBEGA1UEBxMKRGlsbGVuYnVyZzESMBAGA1UEAxMJMTI3LjAuMC4xMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAofA7J9eN5Q8pTrbHOBQC63gB4m6NPNjx
NZ302U5VK5SIkT8lYNk/uwY88C93jAgEBjgSk9IcLdzCRIay5UJmf92fSwZS+x+7
V8nQyuMtQ+9uipX5nhFVAj1iGbO92McsuBb9ck1jQuNt5YZW1WsnGivh88vMiKBa
7eKnJZbgPjAShCL+WvZpCbWuhy6iUlb/ya0PUNZZNYAkznXarUB706rhLFKF2ikq
lVJnK9d1b/rifBQbHs2anOnKa6ZUUKoai/uOg/F7KpV83tsR5RWaHqy0vICgiG77
qx8cBzKgnL14BFQ5AZWv6Rul9+snnJlpGhuNr7gc/iMD4RfEmJzIawIDAQABo4HH
MIHEMB0GA1UdDgQWBBQk4IptXfOI12nTkE1T4vvR8xw3gzCBlAYDVR0jBIGMMIGJ
gBQk4IptXfOI12nTkE1T4vvR8xw3g6FupGwwajELMAkGA1UEBhMCZGUxDzANBgNV
BAgTBkhlc3NlbjEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRMw
EQYDVQQHEwpEaWxsZW5idXJnMRIwEAYDVQQDEwkxMjcuMC4wLjGCAQAwDAYDVR0T
BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOCAQEAFQCgBVltXOW5qJvjT2DEozp1ns7E
xCU3QTZWYvav/yIz+QAI8tE9JV2aV0hbKYO5mcRYfU9aEgb7NjX3N+9TDh5a2g5W
r9ZSWH4cew+XgIdN0NZljTxk5DQ6CxQmWYrDT+UE6aGqbcpZymd4LXblxYKMTzE0
26pMipE5oFGkqqzP55ZoPhK7nThZ3kJe3e6xAav5f46yCORCkU/+Vmwq3iEInYD3
vTCbUMRzp1166QFSs1/BnAYecinz0RFZGtkm4YdKS9/uPf6LOTbYG0FnibS7NWco
1BTrH9YK/rsUO3DiCWkXT32lv+qC2BqmfrKUOCK+zo8/MhmVpdBxq6cr/Q==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAofA7J9eN5Q8pTrbHOBQC63gB4m6NPNjxNZ302U5VK5SIkT8l
YNk/uwY88C93jAgEBjgSk9IcLdzCRIay5UJmf92fSwZS+x+7V8nQyuMtQ+9uipX5
nhFVAj1iGbO92McsuBb9ck1jQuNt5YZW1WsnGivh88vMiKBa7eKnJZbgPjAShCL+
WvZpCbWuhy6iUlb/ya0PUNZZNYAkznXarUB706rhLFKF2ikqlVJnK9d1b/rifBQb
Hs2anOnKa6ZUUKoai/uOg/F7KpV83tsR5RWaHqy0vICgiG77qx8cBzKgnL14BFQ5
AZWv6Rul9+snnJlpGhuNr7gc/iMD4RfEmJzIawIDAQABAoIBAFTfP2HGS4v9wjyK
9yag9lbK8tHl9wgo+2KKgsVRlLnegyT8324+7nPq9Q09E37ExLcttC7dM/+lb/vS
TPhzMJ1bXh1IFz2eh+We1FtBbXvphRoFOGpr0w31dfDaj2mKGhnxkqvRe3CXGgXt
vpzkJ/5DeYz5Bx2kTYPYAppk1OpCGkLRfYgvIP/AAmnuCEe7aUJc+owhVmmp9wtR
YGFA3tLfo9N01r/gA7hjHM4Fg5pPFTjHc5qE9MP4ZpRmitFTOHHVTJb5B4sLHqm0
gQdDsvLUzJOCQp8ajqiWuPgWqyU21gIIy0DnH2nTvkYlUk3cx6/ofXwiHZ9j/f/b
YhoC5yECgYEAzY8J6wYU/a0D+Wf25MDw+bFOioVDydNWPXCgbhwl1QKX5soy1ngV
5Saa7fgIMI5giIEqTyOSoh2XuBScjg3p+cgZBXLHl8DrHSDWXhvhLGskei7lT4Rp
BgzqJhNFu0q1p2Sf1/QleuTl5PCdMYhX7Dvg7bczwQ8Yh+HMASIwV78CgYEAya0D
XpDbvwY6+lyocfNGeYu6GJFKN0uA3JCZ66rxNi/cCxXE3Bi3RdjMXPYj3WdDH6NZ
UpH1Td+bNmg7TIHoc3yt/NtXCRhgdMEBffJATqXKW3a/yoV13Mpg89Cwj5w/uByJ
21xN8z4zm1TZkeKnlYSU22HoP2v5H4UdLonp2lUCgYEAgHJ5SBss0rdiXF7SsG7A
JcbdxUEw8tTUduAB38xG96v/L3/59HpldCODfGAY/f5549KSlZEs95B2VdjLWxjm
s+aNfBIVFoa+ZB041uWk9xScXp0fPWkIF3fKeLBiSn6MtGT0XQV6xihyX3TbRTBl
gICKNQDdni3IrmAyEiNDAhECgYASGb8lq6atXGfKtKpBn+4BVrMbJV8d217zbN8D
sdH4ZQ9Ax3Flt6orUKv24/iQFIaHvmdz67myhZEurugzk61DQDt1aFJFdLSjhfcW
ULnI1UR2NRA9owDTEi7lcyOFoCZv5c/RqlUssbZ8CH+Ggms8FiwuDHmFx7ESTSYz
WRluCQKBgQCiV5vjvitcjRaxQaqW4lnH2/DiPn1hkIXFMGFVW3spXadDDDicE2AH
PQo6dCCF67nR8H5+0/XBcQL65QAcPMdxt4dX4SCNPtJPop6cxj0/QTdby+S9Ws9x
RO1Psjt4WwPeFuoufbwP3dCgg87LeZRyuS5D7vfUMVI2OB7dzHaxXQ==
-----END RSA PRIVATE KEY-----
<?php
error_reporting(-1);
$clientContext = stream_context_create(array("ssl" => array(
'allow_self_signed' => true,
'verify_peer' => false
)));
$connection = stream_socket_client('ssl://localhost:4096', $errcode, $errstr, 2, STREAM_CLIENT_CONNECT, $clientContext);
stream_set_blocking($connection, 0);
if ($connection) {
echo "\n\n************\nConnected!\n\n";
sleep(1);
echo stream_get_contents($connection);
} else {
echo "\n\nError occured:\n$errcode\n$errstr\n\n";
}
<?php
error_reporting(-1);
$sslOptions = array(
'local_cert' => __DIR__.'/certificate.pem',
'allow_self_signed' => true,
'verify_peer' => false
);
$serverContext = stream_context_create(array("ssl" => $sslOptions));
$socket = stream_socket_server("ssl://127.0.0.1:4096", $errno, $errstr, STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $serverContext);
// Uncomment the following line to make the server asynchronous (and break everything):
//stream_set_blocking($socket, 0);
while ($conn = stream_socket_accept($socket)) {
fwrite($conn, "Hello encrypted world!\n");
fclose($conn);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment