@eugene159

Почему у некоторых сайтов удается получить информацию об SSL, а у некоторых — нет? Как это исправить?

На stackoverflow я нашел код для получения информации об SSL сертификатах. Вот он:
https://stackoverflow.com/a/46115387

Я запустил его. С некоторыми доменами он работает. Вот примеры:
petrovich.ru
leroymerlin.ru
www.sportmaster.ru

А с некоторыми не работает. Вот пример:
beton-gatchina.ru

Почему так? Как мне это исправить?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

SSL {#3
+domain: "beton-gatchina.ru"
+validFrom: "2022-Jul-14"
+validTo: "2023-Aug-15"
+issuer: "GlobalSign nv-sa"
+validity: "372 days"
+validitytot: "396 days"
+crtValRemaining: 1692115953
}


Вот так нада:
<?php
$get = stream_context_create([
    "ssl" => [
        'capture_peer_cert'       => true,
        'capture_peer_cert_chain' => true,
        'verify_peer'             => false,
    ],
]);


А в скрипте вот так:
<?php
$get = stream_context_create([
    "ssl" => [
        'capture_peer_cert'       => true,
        // 'capture_peer_cert_chain' => true,
        // 'verify_peer'             => false,
    ],
]);


Это настройки ext-openssl, которая скомпилена под винду с SSL настройками от линукса, она сертификаты ищет /usr/local/ssl/, а в винде нет таких папок. Настроить как-то можно, а нужно?

dd(openssl_get_cert_locations());

array:8 [
  "default_cert_file" => "C:\usr\local\ssl/cert.pem"
  "default_cert_file_env" => "SSL_CERT_FILE"
  "default_cert_dir" => "C:\usr\local\ssl/certs"
  "default_cert_dir_env" => "SSL_CERT_DIR"
  "default_private_dir" => "C:\usr\local\ssl/private"
  "default_default_cert_area" => "C:\usr\local\ssl"
  "ini_cafile" => "d:/openserver/userdata/config/cacert.pem"
  "ini_capath" => ""
]


А пока просто вырубаем verify_peer.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы