PHP-клиент для проверки https-сертификатов

Мне нужно создать php, который будет действовать как клиент и использовать некоторые веб-службы под https. Моя проблема в том, что я также хочу проверить сертификат сервера. Мне нужно знать, что у меня есть правильный сервер, и что нет никого среднего, который действует как сервер. Может кто-то мне помочь, пожалуйста?

Благодаря!

Если у вас есть расширение curl, его можно настроить для проверки сертификата на соединение.

http://php.net/manual/en/function.curl-setopt.php

// As of writing this, Twitter uses Verisign, Google uses Eqifax $exampleUrl = 'https://twitter.com/'; // Success $exampleUrl = 'https://google.com/'; // Fails // create a new CURL resource $ch = curl_init($exampleUrl); // enable verification curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // list of CAs to trust // If the remote site has a specific CA, they usually have a .crt // file on their site you can download. Or you can export key items from // some browsers. // In this example, using: Verisign [1] curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . '/ca_bundle.crt'); // - or - curl_setopt($ch, CURLOPT_CAPATH, __DIR__ . '/ca_certs/); // If the remote site uses basic auth: curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password); // And a helpful option to enable while debugging //curl_setopt($ch, CURLOPT_VERBOSE, true); // defaults to stdout, don't want that for this case. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $page = curl_exec($ch); 

[1] http://www.verisign.com/support/verisign-intermediate-ca/extended-validation/apache/

Похоже, что с Curl 7.10 это значение устанавливается по умолчанию:
http://php.net/manual/en/function.curl-setopt.php


CURLOPT_SSL_VERIFYPEER

FALSE, чтобы остановить cURL от проверки сертификата партнера. Альтернативные сертификаты для проверки могут быть указаны с помощью опции CURLOPT_CAINFO, или каталог сертификата может быть указан с помощью опции CURLOPT_CAPATH.

TRUE по умолчанию, начиная с cURL 7.10. Комплект по умолчанию, установленный cURL 7.10.


CURLOPT_SSL_VERIFYHOST

1, чтобы проверить наличие общего имени в SSL-сертификате. 2, чтобы проверить наличие общего имени, а также убедиться, что он соответствует указанному имени хоста. В производственных средах значение этой опции должно быть равно 2 (значение по умолчанию).