Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как получить содержимое файла .cer


Автор: BDmV 6.6.2014, 14:03
Добрый день.
Появилась острая необходимость контролировать даты окончания действия сертификатов открытого ключа (.cer) 
С помощью какой функции можно разобрать содержимое файлов .cer для последующей записи в MySQL? 
openssl_x509_parse и openssl_x509_read почему-то отказываются открывать файл.
Подобный скрипт:
Код

<?php
include("/srv/www/tools/debug.php");
ini_set('display_errors','on');

$fp = fopen("/srv/www/cert/сert.cer", "r");
$cert = fread($fp,8192);
fclose($fp);
print_r(openssl_x509_parse(openssl_x509_read($cert)));
?>
 выдаёт ошибку:
Код

Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in /srv/www/cert/index.php on line 8 

Автор: krundetz 26.6.2014, 00:50
BDmV, меня смущает вот эта строка:
Код

$cert = fread($fp,8192);

может попробовать вот так:
Код

$cert = fread($fp, filesize("/srv/www/cert/сert.cer"));

или так
Код

while (!feof($fp)) {
  $cert .= fread($handle, 8192);
}

или так
Код

$cert = file_get_contents("/srv/www/cert/сert.cer");

кстати на странице с документацией функции openssl_x509_parse содержимое сертификата получают именно так.

А файл сертификата точно в том формате который может быть обработан? 

И да насколько я понял из документации функцие openssl_x509_read можно просто дать путь к сертификату главное чтобы он был в формате PEM

Автор: BDmV 2.7.2014, 08:00
Цитата(krundetz @ 26.6.2014,  00:50)
BDmV, ...
А файл сертификата точно в том формате который может быть обработан? 

И да насколько я понял из документации функцие openssl_x509_read можно просто дать путь к сертификату главное чтобы он был в формате PEM

Формат PEM меня не устраивает т.к. все сертификаты, которые мы получаем в УЦ идут в формате CER или CRT и то что вытащить из них данные можно я заню, но вот как, я не знаю. :(

Автор: krundetz 3.7.2014, 10:18
ох  smile

Цитата(BDmV @  2.7.2014,  08:00 Найти цитируемый пост)
Формат PEM меня не устраивает

зачем тогда пользуетесь функциями предназначенными для работы только с этим форматом?

Цитата(BDmV @  2.7.2014,  08:00 Найти цитируемый пост)
 которые мы получаем в УЦ идут в формате CER или CRT

это не форматы, предполагаю что вы имеете в виду расширения

согласно http://ru.wikipedia.org/wiki/X.509 существует два основных формата хранения сертификатов  DER и PEM

у вас скорее всего формат DER

как преобразовать его в PEM написано http://stackoverflow.com/questions/991758/how-to-get-an-openssl-pem-file-from-key-and-crt-files и http://www.php.net/manual/ru/ref.openssl.php

Цитата(BDmV @  2.7.2014,  08:00 Найти цитируемый пост)
и то что вытащить из них данные можно я заню

конечно можно http://datatracker.ietf.org/wg/pkix/charter/

Цитата(BDmV @  2.7.2014,  08:00 Найти цитируемый пост)
но вот как, я не знаю

а что пытались узнать?  smile ИМХО непохоже, больше похоже на:

у меня есть проблема, мозг напрягать не хочу, дайте готовое решение

Автор: baldina 3.7.2014, 10:48
https://gist.github.com/ajzele/4585931

Автор: krundetz 3.7.2014, 16:38
режим зануды

baldina, переведенное вами решение аналогично одному из данных мной, только вот название файла cerToPem.php будет сеять путаницу в головах разработчиков, поэтому прошу вас переименовать файл в DerToPem.php

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)