我试图使用Crypt::X 509库从.pem证书中提取数据,但是在对象构造中出现了一个错误。下面是我正在做的工作: 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; 包含要解析的DER格式化证书的变量。
my $der = MIME::Base64::decode($pem_cert);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. 我试过使用其他证书,但错误是相同的。
发布于 2016-08-17 08:40:10
当使用MIME::Base64 64::decode将证书从PEM转换为DER时,需要删除PEM头和预告片,而不是解码
-----BEGIN CERTIFICATE-----
MIICVTCCAbegAwIBAgIELwBe7DAKBggqhkjOPQQDAjAaMRgwFgYDVQQDDA9mb28u
....
-----END CERTIFICATE-----您应该只解码base64部分:
MIICVTCCAbegAwIBAgIELwBe7DAKBggqhkjOPQQDAjAaMRgwFgYDVQQDDA9mb28u
....由于-----BEGIN CERTIFICATE-----等包含有效的base64字符,它们将用于解码,而无效字符则被忽略。
https://stackoverflow.com/questions/38991171
复制相似问题