X509: полный список методов

Класс X509 в Jsrsasign представляет собой инструмент для работы с X.509 сертификатами в формате PEM/DER. Он позволяет разбирать сертификаты, извлекать их поля, проверять подписи и работать с расширениями стандарта X.509.

Основной набор методов сосредоточен в объекте KJUR.asn1.x509.X509 и охватывает анализ структуры сертификата, криптографическую проверку и извлечение метаданных.


parseCert(certPEM)

Разбор сертификата из строки PEM.

  • Принимает строку сертификата в формате PEM
  • Выполняет парсинг ASN.1 структуры
  • Инициализирует внутренние поля объекта
const x = new X509();
x.parseCert(pemString);

После вызова становятся доступны все методы извлечения данных.


Основные идентификационные поля сертификата

getVersion()

Возвращает версию X.509 сертификата.

  • Обычно 2 для X.509 v3

getSerialNumberHex()

Возвращает серийный номер сертификата в hex-формате.

  • Используется для идентификации сертификата в цепочке доверия

getIssuerString()

Возвращает строковое представление издателя сертификата (Issuer).

  • Формат: DN (Distinguished Name)
  • Пример: C=US, O=Let's Encrypt, CN=R3

getSubjectString()

Возвращает строковое представление субъекта сертификата (Subject).

  • Используется для идентификации владельца сертификата

getIssuer()

Возвращает объект ASN.1 структуры Issuer.

  • Более низкоуровневый доступ по сравнению с getIssuerString

getSubject()

Возвращает ASN.1 структуру Subject.

  • Полезно при детальном анализе DN-полей

Срок действия сертификата

getNotBefore()

Возвращает дату начала действия сертификата.

  • Формат: строка или объект Date (в зависимости от конфигурации)

getNotAfter()

Возвращает дату окончания действия сертификата.

  • Используется для проверки актуальности сертификата

Публичный ключ

getPublicKey()

Возвращает объект публичного ключа.

  • Тип зависит от алгоритма (RSA, ECDSA)
  • Совместим с объектами Jsrsasign KeyObject
const pubKey = x.getPublicKey();

getPublicKeyHex()

Возвращает публичный ключ в hex-формате.

  • Используется для низкоуровневой обработки ключа

getSubjectPublicKeyInfo()

Возвращает ASN.1 структуру SubjectPublicKeyInfo.

  • Содержит алгоритм и сам ключ

Алгоритмы и подпись

getSignatureAlgorithmName()

Возвращает название алгоритма подписи.

  • Примеры:

    • SHA256withRSA
    • SHA384withECDSA

verifySignatureWithPublicKey(pubKey)

Проверяет подпись сертификата с использованием переданного публичного ключа.

  • Принимает объект ключа
  • Возвращает true или false
const ok = x.verifySignatureWithPublicKey(pubKey);

verifySignature(pubKey)

Аналогичная проверка подписи.

  • Используется в зависимости от версии Jsrsasign
  • Может быть алиасом метода выше

Расширения сертификата (Extensions)

getExtSubjectAltName()

Возвращает расширение Subject Alternative Name.

  • Содержит DNS, IP и альтернативные идентификаторы
  • Часто используется в TLS

Пример результата:

DNS:www.example.com, DNS:example.com

getExtKeyUsage()

Возвращает расширение Key Usage.

  • Определяет допустимые сценарии использования ключа:

    • digitalSignature
    • keyEncipherment
    • dataEncipherment
    • certSign

Дополнительная информация

getInfo()

Возвращает комплексный объект с данными сертификата.

Содержит:

  • Subject
  • Issuer
  • Serial Number
  • Validity
  • Public Key
  • Extensions

Используется как быстрый способ получить сводку.


Внутренние и вспомогательные возможности

Хотя не всегда документированы как публичный API, в зависимости от версии Jsrsasign доступны дополнительные методы:

  • _getIssuer()
  • _getSubject()
  • _getExtInfo()

Они используются внутри библиотеки и могут отличаться между версиями.


Пример полного анализа сертификата

const x = new X509();
x.parseCert(pem);

console.log(x.getSubjectString());
console.log(x.getIssuerString());
console.log(x.getSerialNumberHex());
console.log(x.getNotBefore());
console.log(x.getNotAfter());

const pub = x.getPublicKey();
console.log(x.getSignatureAlgorithmName());

const valid = x.verifySignatureWithPublicKey(pub);

Структура работы методов

Методы можно условно разделить на группы:

1. Парсинг

  • parseCert

2. Идентификация

  • getSerialNumberHex
  • getSubjectString
  • getIssuerString
  • getVersion

3. Временные параметры

  • getNotBefore
  • getNotAfter

4. Ключи

  • getPublicKey
  • getPublicKeyHex
  • getSubjectPublicKeyInfo

5. Подпись

  • getSignatureAlgorithmName
  • verifySignatureWithPublicKey
  • verifySignature

6. Расширения

  • getExtSubjectAltName
  • getExtKeyUsage

7. Сводная информация

  • getInfo