Как создать неподписанный сертификат x509? - PullRequest
0 голосов
/ 28 сентября 2019

В целях тестирования я хочу создать неподписанный (не самозаверяющий) сертификат.

Я использовал эту команду

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 -subj '/CN=localhost'

Но при просмотре созданного сертификата с

openssl x509 -in cert.pem -text

Я вижу, что у него есть подпись и он самоподписан.

1 Ответ

1 голос
/ 28 сентября 2019

Это не имеет смысла, потому что сертификаты всегда подписаны.

С IETF RFC 5280, раздел 4.1 :

Certificate  ::=  SEQUENCE  {
    tbsCertificate       TBSCertificate,
    signatureAlgorithm   AlgorithmIdentifier,
    signatureValue       BIT STRING  }

TBSCertificate  ::=  SEQUENCE  {
    version         [0]  EXPLICIT Version DEFAULT v1,
    serialNumber         CertificateSerialNumber,
    signature            AlgorithmIdentifier,
    issuer               Name,
    validity             Validity,
    subject              Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                         -- If present, version MUST be v2 or v3
    subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                         -- If present, version MUST be v2 or v3
    extensions      [3]  EXPLICIT Extensions OPTIONAL
                         -- If present, version MUST be v3
    }

Сертификат - этоподписанный TBSCertificate (подлежащий подписанию сертификат), а TBSCertificate уже должен иметь имя эмитента (4-е поле).Хотя каждая библиотека, которая может читать сертификаты X.509, имеет (фактически) анализатор TBSCertificate, на самом деле не ожидается, что это будет объект верхнего уровня.

Наиболее близким к «неподписанному сертификату» является запрос на сертификацию (разговорно«CSR»), но для этого все еще требуется закрытый ключ (см. Почему закрытый ключ используется при создании CSR? ).

...