PHP-клиент для проверки сертификатов https - PullRequest
3 голосов
/ 04 октября 2011

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

Спасибо!

Ответы [ 2 ]

6 голосов
/ 04 октября 2011

Если у вас есть расширение 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/

0 голосов
/ 30 июля 2012

Похоже, что в 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 (значение по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...