Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cURL + SSL = server anti spoofing 
:(
    Опции темы
night00
  Дата 27.10.2012, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 29.10.2011

Репутация: нет
Всего: нет



Добрый вечер.

Дано: сертификат, выданный доверенным источником (не самоподписанный).

Задача: получить информацию с удалённого сервера с помощью cURL, предотвратив при этом его возможную фальсификацию.

Моё видение реализации:

Код

  /* curl part */
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,"https://remoteserver.ru");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  curl_setopt($ch, CURLOPT_SSLVERSION,3);
  curl_setopt($ch, CURLOPT_CERTINFO,true);
  curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__)."/www.remoteserver.ru.crt");
  $result = curl_exec($ch);
  if (curl_errno($ch) != 0) {
      echo "cURL connection problem, ".curl_errno($ch).": ".curl_error($ch);
  }
  /* curl part */

print_r( curl_getinfo($ch) );


В итоге выполнения получается:

Код

Array
(
    [url] => https://remoteserver.ru
    [content_type] => text/html
    [http_code] => 200
    [header_size] => 148
    [request_size] => 79
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.374
    [namelookup_time] => 0
    [connect_time] => 0.062
    [pretransfer_time] => 0.203
    [size_upload] => 0
    [size_download] => 20618
    [speed_download] => 55128
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => 0
    [starttransfer_time] => 0.281
    [redirect_time] => 0
    [certinfo] => Array
        (
            [0] => Array
                (
                    [Subject] => Array
                        (
                            [OU] => Globe Standard SSL
                            [CN] => www.remoteserver.ru
                        )

                    [Issuer] => Array
                        (
                            [C] => US
                            [O] => Globe Hosting, Inc.
                            [OU] => GlobeSSL DV Certification Authority
                            [CN] => GlobeSSL CA
                        )

                    [Version] => 2
                    [Signature Algorithm] => sha1WithRSAEncryption
                    [Start date] => 2011-09-30 00:00:00 GMT
                    [Expire date] => 2014-09-30 23:59:59 GMT
                    [Public Key Algorithm] => rsaEncryption
                    [RSA Public Key] => 2048
                    [rsa(n)] => d7:c0:0b:3f:f3:3e:d6:ed:92:56:22:12:64:c1:c4:00:d7:c9:a1:1e:..и так далее..
                    [rsa(e)] => 01:00:01:
                    [X509v3 Authority Key Identifier] => keyid:C3:AB:A0:02:F0:9B:F5:66:7F:28:15:92:22:95:DB:B8:4E:D3:93:08
                    [X509v3 Subject Key Identifier] => 13:1B:B2:52:14:3C:70:1C:B2:93:F1:C5:04:06:86:60:8A:D4:E5:5C
                    [X509v3 Key Usage] => DigitalSignature,KeyEncipherment
                    [X509v3 Basic Constraints] => CA:FALSE
                    [X509v3 Extended Key Usage] => TLSWebServerAuthentication,TLSWebClientAuthentication
                    [X509v3 Certificate Policies] => Policy:1.3.6.1.4.1.6449.1.2.2.27, CPS:http://www.globessl.com/docs/GlobeSSL_CPS.pdf
                    [X509v3 CRL Distribution Points] => URI:http://crl.globessl.com/GlobeSSLDVCertificationAuthority.crl
                    [Authority Information Access] => CAIssuers-URI:http://crt.globessl.com/GlobeSSLDVCertificationAuthority.crt, OCSP-URI:http://ocsp.globessl.com
                    [X509v3 Subject Alternative Name] => DNS:www.remoteserver.ru,DNS:remoteserver.ru
                    [Signature] => 61:38:06:d4:30:9c:14:a4:e5:1e:b2:c8:c4:..и так далее..
                    [Cert] => -----BEGIN CERTIFICATE-----вырезано-----END CERTIFICATE-----

                )

            [1] => Array
                (
                    [Subject] => Array
                        (
                            [C] => US
                            [O] => Globe Hosting, Inc.
                            [OU] => GlobeSSL DV Certification Authority
                            [CN] => GlobeSSL CA
                        )

                    [Issuer] => Array
                        (
                            [C] => SE
                            [O] => AddTrust AB
                            [OU] => AddTrust External TTP Network
                            [CN] => AddTrust External CA Root
                        )

                    [Version] => 2
                    [Signature Algorithm] => sha1WithRSAEncryption
                    [Start date] => 2010-06-22 00:00:00 GMT
                    [Expire date] => 2020-05-30 10:48:38 GMT
                    [Public Key Algorithm] => rsaEncryption
                    [RSA Public Key] => 2048
                    [rsa(n)] => a0:47:04:ce:a8:33:ab:..и так далее..
                    [rsa(e)] => 01:00:01:
                    [X509v3 Authority Key Identifier] => keyid:AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A
                    [X509v3 Subject Key Identifier] => C3:AB:A0:02:F0:9B:F5:66:7F:28:15:92:22:95:DB:B8:4E:D3:93:08
                    [X509v3 Key Usage] => CertificateSign,CRLSign
                    [X509v3 Basic Constraints] => CA:TRUE,pathlen:0
                    [X509v3 Certificate Policies] => Policy:1.3.6.1.4.1.6449.1.2.2.27
                    [X509v3 CRL Distribution Points] => URI:http://crl.usertrust.com/AddTrustExternalCARoot.crl
                    [Authority Information Access] => CAIssuers-URI:http://crt.usertrust.com/AddTrustExternalCARoot.p7c, CAIssuers-URI:http://crt.usertrust.com/AddTrustUTNSGCCA.crt, OCSP-URI:http://ocsp.usertrust.com
                    [Signature] => 66:9c:13:6d:d2:7e:2c:..и так далее..
                    [Cert] => -----BEGIN CERTIFICATE-----вырезано-----END CERTIFICATE-----

                )

        )

)


В выводе, есть две секции [certinfo][0] и [certinfo][1]. В чём их разница и к чему нужно привязать проверку?

Заранее спасибо за ответы.

Это сообщение отредактировал(а) night00 - 27.10.2012, 22:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.