Openssl 是否可以创建没有签名字段的x509证书?

Openssl 是否可以创建没有签名字段的x509证书?,openssl,x509,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 但它有一个签名字段: Signatu

出于测试目的,我想创建一个没有签名字段的证书。(我想我可以称之为未签名。)到目前为止,我所有的尝试都失败了。每当我创建证书时,它都有一个签名字段

我使用此命令创建证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 -subj '/CN=localhost'
然后我查看证书:

openssl x509 -in cert.pem -text
但它有一个签名字段:

Signature Algorithm: sha256WithRSAEncryption
     bb:98:a0:6f:3c:4b:5c:6d:29:1b:4b:1a:e8:70:6b:72:03:39:
     ...
这个问题不是重复的:

因为他的问题是关于签署证书(他已经有了证书)。我想创建一个证书(我不想签署任何证书)

我还尝试创建一个CSR(如下面的答案所示),如下所示:

openssl genrsa -des3 -passout pass:test1234 -out keypair.key 2048
openssl rsa -passin pass:test1234 -in keypair.key -out moh.key
openssl req -new -key moh.key -out jo.csr
openssl req -noout -text -in jo.csr
甚至由此产生的CSR也有一个签名


也许可以创建一个没有签名字段的CSR?

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

发件人:

证书是已签名的TBSCertificate(待签名证书),并且TBSCertificate必须具有颁发者名称(第4个字段)。虽然每个可以读取X.509证书的库(实际上)都有一个TBSCertificate解析器,但实际上并不期望它是顶级对象

最接近“未签名证书”的是一个证书请求(俗称“CSR”),但它仍然需要一个私钥(请参阅)

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
    }