Я пытаюсь извлечь данные из сертификата .pem с помощью библиотеки Crypt::X509, но получаю ошибку при построении объекта. Вот что я делаю: 1. Читаю содержимое файла .pem:
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat $s_filename;
open FILE, "<$s_filename" or die "no such file";
binmode FILE;
my $pem_cert;
read FILE, $pem_cert, $size;
close FILE;
2. Декодируйте содержимое из base64, чтобы получить содержимое в формате DER. Это сделано потому, что в документации CPAN библиотеки Crypt::X509 указано, что ее нужно передать:
Переменная, содержащая сертификат в формате DER для анализа.
my $der = MIME::Base64::decode($pem_cert);
- Вызовите конструктор Crypt::X509 и проверьте наличие ошибок:
my $oref_x509= Crypt::X509->new(cert=>$der);
if ( $oref_x509->error ) {
warn "Error on parsing certificate: ",
$oref_x509->error;
}
Я получаю следующую ошибку:
Error on parsing certificate: decode error 04<=>30 0 8 at ..<path>../Convert/ASN1/_decode.pm line 113.
Я пробовал с другим сертификатом, но ошибка та же.