curl_getinfo ($ ch, CURLINFO_CERTINFO) пусто - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть PHP 7.2 из IUS хранилища, но то же самое поведение по умолчанию для PHP (CentOS 7.x).

Код:

$domain = "google.com";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://' . $domain);
curl_setopt($ch, CURLOPT_CERTINFO, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);

curl_exec($ch);
$certInfo = curl_getinfo($ch, CURLINFO_CERTINFO);

curl_close($ch);

Переменная $ certInfo пусто.Я протестировал curl с https://www.howsmyssl.com/a/check и он поддерживает TLS 1.2.

OpenSSL 1.0.2k-fips
cURL support => enabled
cURL Information => 7.29.0
Age => 3
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => Yes
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => No
SSL => Yes
SSPI => No
TLS-SRP => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host => x86_64-redhat-linux-gnu
SSL Version => NSS/3.36
ZLib Version => 1.2.7
libSSH Version => libssh2/1.4.3

Что не так?свернуться?OpenSSL?NSS

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Чтобы решить эту проблему, вам нужно обновить curl и libcurl до более новой версии, например 7.42.0.

Исправлено в 7.42.0 - 22 апреля 2015

Changes:

    openssl: show the cipher selection to use in verbose text
    gtls: implement CURLOPT_CERTINFO
    add CURLOPT_SSL_FALSESTART option (darwinssl and NSS)
    curl: add --false-start option
    add CURLOPT_PATH_AS_IS
    curl: add --path-as-is option
    curl: create output file on successful download of an empty file

Идля CentOS 7.x:

7.34 bugfix ->  NSS: support for CERTINFO feature
0 голосов
/ 22 февраля 2019

Попробуйте это с помощью: (обновленный домен)

$domain = "www.google.com";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://' . $domain);
curl_setopt($ch, CURLOPT_CERTINFO, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);

curl_exec($ch);
$certInfo = curl_getinfo($ch, CURLINFO_CERTINFO);

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