php openssl_x509_parse не парсит некоторые сертификаты
Почему-то openssl_x509_parse возвращает false на некоторые сертификаты, буквально 1-2% из общей массы.
$crt = openssl_x509_parse(openssl_x509_read("-----BEGIN CERTIFICATE-----\n{$cert}\n-----END CERTIFICATE-----"));
// вот такое предупреждение (на windows) php 7.1
Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate!
// или вот такое на сервере (ubuntu) php 8.0
PHP Warning: openssl_x509_read(): X.509 Certificate cannot be retrieved
Хотя через openssl все исправно обрабатывает командой, но надо создавать текстовый файл и передавать его openssl
openssl x509 -in test.crt -text -noout
Ну, и на выходе получаем текстовый вывод, который также еще надо разобрать, вытащить нужную информацию. Openssl_x509_parse, конечно, удобнее, поскольку сразу возвращал массив
Почему такая разница? Как-то можно исправить или использовать через exec() openssl