Вытащить значения сертификата LDAP userCertificate X509

yeastor

Новичок
Вытащить значения сертификата LDAP userCertificate X509

Добрый всем День!
Пытаюсь вытащить из AD значение сертификата...

Пробую по-простому (не из AD) открываю файл сертификата и пытаюсь его парсить получаю bool(false).
сертификат x.509.



PHP:
$fp = fopen("admin_userCertificate.bin", "r");
$cert = fread($fp, 8192); 
fclose($fp); 
$data = openssl_x509_parse($cert);
var_dump($data);
Может у кого получалось?
 

Alexandre

PHPПенсионер
использовать утилиту openSSL не пробовал?
проверить на валидность сертификата,

парсинг сертификата орсуществляется в каком формате???
а что показывает:
print_r(openssl_x509_parse( openssl_x509_read($cert) ) ); ???
 

yeastor

Новичок
Warning: openssl_x509_read() [function.openssl-x509-read]: supplied parameter cannot be coerced into an X509 certificate! in D:\Sites\tel2\newtel\sertificate.php on line 14

вот и я не могу понять в каком формате, т.е. в какой кодировке и что сделать чтобы перекодировать? вообще x.509
 

Alexandre

PHPПенсионер
вот и я не могу понять в каком формате, т.е. в какой кодировке и что сделать чтобы перекодировать? вообще x.509
http://www.mkssoftware.com/docs/man1/openssl_verify.1.asp
http://www.mkssoftware.com/docs/man1/openssl_x509.1.asp#EXAMPLES
http://www.madboa.com/geek/openssl/
http://www.herongyang.com/crypto/openssl_verify_2.html

1) определяем кодировку сертификата
2) определяем корректность формата
3) перекодируем из формата А в формат PEM
4) используем
 

yeastor

Новичок
формат сертификата у меня бинарный(binary), а нужен base 64 причем наченатся выйл должен с "-----BEGIN CERTIFICATE----", а заканчиваться "-----END CERTIFICATE-----" данные между этими заголовками должны быть разбиты на строки по 76 символов. Как перекодировать средствами php не нашел.
Сделал:
PHP:
// $val сертификат
$cert = implode("\n",str_split(base64_encode($val), 76));
	
				$data = openssl_x509_parse(openssl_x509_read("-----BEGIN CERTIFICATE-----
".$cert."
-----END CERTIFICATE-----"));
 

Alexandre

PHPПенсионер
Сделал:
// $val сертификат
$cert = implode("\n",str_split(base64_encode($val), 76));

$data = openssl_x509_parse(openssl_x509_read("-----BEGIN CERTIFICATE-----
".$cert."
-----END CERTIFICATE-----"));
и заработало???
если да, то странно...
yeastor ты ссылки смотрел???
 

yeastor

Новичок
заработало.
смотрел, там только через командную строку, а мне это не подходит, буду ждать новой новой версии PHP
 

Alexandre

PHPПенсионер
yeastor добецся результата через командную строку, пойми причину,
а далее ищи решение через РНР
ну и наконец: вызов через system()
какие проблемы?
 
Сверху