出于测试目的,我想创建一个未签名(非自签名)证书。
我用了这个命令
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 -subj '/CN=localhost'
但是当我使用以下方式查看创建的证书时
openssl x509 -in cert.pem -text
我看到它具有签名并且是自签名的。
答案 0 :(得分:0)
但这没有意义,因为证书总是经过签名的。
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?)。