Во-первых, у вас есть base64 или PEM?Это не одно и то же;хотя PEM включает base64, это не только base64.Если у вас есть файл, который работает с openssl x509 -in file
, то это PEM, NOT только base64.Кажется, что люди смотрят на PEM, видят более 40 символов base64, и их мозг отключается и становится неспособным видеть линию тире-BEGIN, линию тире-END и разрывы строк, все из которых ТРЕБУЮТСЯ.
Во-вторых, certificate.pem
- это имя файла или путь, а не URL.Имя файла или путь не является URL-адресом, а URL-адрес не является именем файла или пути, хотя некоторые схемы URL (и особенно единственные, которые замечает большинство людей) включают некоторые элементы, общие с именами путей.
Ввод сертификата для openssl x509
должен быть либо (именованным) файлом, либо стандартным вводом (обычно сокращенно stdin).Если вы не хотите предоставлять его в виде именованного файла, nodejs
может предоставить данные для стандартного дочернего элемента, но не с помощью методов exec*
более высокого уровня, а только более базовых spawn
:
* 1020.*
Однако вам не нужно запускать внешнюю программу для разбора сертификата;Есть много библиотек JS, чтобы сделать это.Например, со вторым npmjs находит для меня:
const { Certificate } = require('@fidm/x509');
const { ASN1 } = require('@fidm/asn1');
var iss = Certificate.fromPEM(pem).issuer.attributes;
var s = ""; for(var a of iss){ s += "/" + a.shortName + "=" + a.value; }
console.log(s);
Если у вас действительно был base64, а не PEM, замените третью строку на
const bin = Buffer.from(b64,'base64');
var iss = new Certificate(ASN1.fromDER(bin)).issuer.attributes;