Server.php<?php
$pem_passphrase = 'mykey';
$pemfile = './server.pem';
$ca = './server.crt';$context = stream_context_create ();// local_cert must be in PEM format
stream_context_set_option ( $context, 'ssl', 'local_cert', $pemfile );
stream_context_set_option ( $context, 'ssl', 'cafile', $ca );
stream_context_set_option ( $context, 'ssl', 'capath', "./");
// Pass Phrase (password) of private key
stream_context_set_option ( $context, 'ssl', 'passphrase', $pem_passphrase );stream_context_set_option ( $context, 'ssl', 'allow_self_signed', true );
stream_context_set_option ( $context, 'ssl', 'verify_peer', true );// Create the server socket
$server = stream_socket_server ( 'ssl://192.168.1.91:1100', $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context );while ( true ) {
$buffer = '';
print "waiting...\n";
$client = stream_socket_accept ( $server );
if ($client) {
print "accepted " . stream_socket_get_name ( $client, true ) . "\n";
$buffer .= fread ( $client, 1024 );
print $buffer;
// Respond to client
fwrite ( $client, "Hello client! ");
fclose ( $client );
} else {
print "error.\n";
}
}?> client.php<?php
$option = array (
"ssl" => array (
'local_cert' => "client.pem",
//  'cafile' => "client-cert.pem",
//  'capath' => "./",
'verify_peer' => true,
'allow_self_signed' => true,
'passphrase' => "mykey",

);$host = '192.168.1.91';
$port = 1100;$context = stream_context_create ( $option );
$fp = stream_socket_client ( 'ssl://' . $host . ':' . $port, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context );
if ($fp) {
$r = fwrite ( $fp, "hello server" );
echo fread ( $fp, 1024 );
fclose ( $fp );
} else {
echo "ERROR: $errno - $errstr<br />\n";
}?> 
服务器端报错:
[root@localhost www]# php -f Server.php 
waiting...
PHP Warning:  stream_socket_accept(): SSL operation failed with code 1. OpenSSL Error messages:
error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate in /www/epp/www/Server.php on line 53Warning: stream_socket_accept(): SSL operation failed with code 1. OpenSSL Error messages:
error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate in /www/epp/www/Server.php on line 53
PHP Warning:  stream_socket_accept(): Failed to enable crypto in /www/epp/www/Server.php on line 53Warning: stream_socket_accept(): Failed to enable crypto in /www/epp/www/Server.php on line 53
PHP Warning:  stream_socket_accept(): accept failed: Success in /www/epp/www/Server.php on line 53Warning: stream_socket_accept(): accept failed: Success in /www/epp/www/Server.php on line 53
error.
waiting...客户端报错:
Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error
 messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify faile
d in E:\www\client.php on line 15Warning: stream_socket_client(): Failed to enable crypto in E:\www\client.php on line 15Warning: stream_socket_client(): unable to connect to ssl://192.168.1.91:1100 (U
nknown error) in E:\www\client.php on line 15
ERROR: 0 - <br />