如何创建未签名的x509证书?

时间:2019-09-28 12:00:59

标签: openssl x509

出于测试目的,我想创建一个未签名(非自签名)证书。

我用了这个命令

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 个答案:

答案 0 :(得分:0)

但这没有意义,因为证书总是经过签名的。

来自IETF RFC 5280, section 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”),但是仍然需要私钥(请参见Why private key is used amidst creation of CSR?)。