peer_verification.phpt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. --TEST--
  2. Peer verification enabled for client streams
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded("openssl")) die("skip openssl not loaded");
  6. if (!function_exists("proc_open")) die("skip no proc_open");
  7. --FILE--
  8. <?php
  9. $serverCode = <<<'CODE'
  10. $serverUri = "ssl://127.0.0.1:64321";
  11. $serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
  12. $serverCtx = stream_context_create(['ssl' => [
  13. 'local_cert' => __DIR__ . '/bug54992.pem'
  14. ]]);
  15. $server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
  16. phpt_notify();
  17. for ($i = 0; $i < 5; $i++) {
  18. @stream_socket_accept($server, 1);
  19. }
  20. CODE;
  21. $clientCode = <<<'CODE'
  22. $serverUri = "ssl://127.0.0.1:64321";
  23. $clientFlags = STREAM_CLIENT_CONNECT;
  24. $caFile = __DIR__ . '/bug54992-ca.pem';
  25. phpt_wait();
  26. // Expected to fail -- untrusted server cert and no CA File present
  27. var_dump(@stream_socket_client($serverUri, $errno, $errstr, 1, $clientFlags));
  28. // Expected to fail -- untrusted server cert and no CA File present
  29. $clientCtx = stream_context_create(['ssl' => [
  30. 'verify_peer' => true,
  31. ]]);
  32. var_dump(@stream_socket_client($serverUri, $errno, $errstr, 1, $clientFlags, $clientCtx));
  33. // Should succeed with peer verification disabled in context
  34. $clientCtx = stream_context_create(['ssl' => [
  35. 'verify_peer' => false,
  36. 'verify_peer_name' => false,
  37. ]]);
  38. var_dump(stream_socket_client($serverUri, $errno, $errstr, 1, $clientFlags, $clientCtx));
  39. // Should succeed with CA file specified in context
  40. $clientCtx = stream_context_create(['ssl' => [
  41. 'cafile' => $caFile,
  42. 'peer_name' => 'bug54992.local',
  43. ]]);
  44. var_dump(stream_socket_client($serverUri, $errno, $errstr, 1, $clientFlags, $clientCtx));
  45. CODE;
  46. include 'ServerClientTestCase.inc';
  47. ServerClientTestCase::getInstance()->run($clientCode, $serverCode);
  48. --EXPECTF--
  49. bool(false)
  50. bool(false)
  51. resource(%d) of type (stream)
  52. resource(%d) of type (stream)