当前位置: 首页 > 知识库问答 >
问题:

是否可以创建一个没有签名字段的x509证书?[副本]

穆阳嘉
2023-03-14
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:
     ...

这个问题不是重复的:

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也有签名。

共有1个答案

金泉
2023-03-14

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

摘自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解析器,但它并不是真正的顶级对象。

 类似资料:
  • 由认证机构签署的X509数字证书包含这两个字段。1.签名算法2.签名值我知道“签名算法”字段包含认证机构用来签署证书的哈希算法。“签名值”是哈希计算的签名。我的问题是哈希处理的数据是什么?是作为企业社会责任(证书签名请求)一部分的公钥还是整个企业社会责任的公钥?

  • 问题内容: 是否可以在不使用Bouncy Castle 类的情况下用Java代码合理地创建X509证书? 问题答案: 签名证书的能力不是标准Java库或扩展的一部分。 您自己需要做的许多代码都是核心的一部分。有一些类可以编码和解码X.500名称,X.509证书扩展,各种算法的公钥,当然还有用于实际执行数字签名的类。 自己实施这项工作并非易事,但绝对是可行的-我第一次制作可用于证书签名的原型时,可能

  • 我已经创建了密钥对,现在我想用电子邮件id绑定我的公钥(创建数字证书)。我不想进行下一步的证书签名。 问:我如何创建数字证书(因此将公钥与身份绑定),而不是现在真正签署它?(使用OpenSSL也可以)。 我的理解是: 数字证书只是将公钥与身份打包 数字签名是一种CA,用于确保/签署证书,并将签名嵌入证书文件中 还是我的理解全错了?

  • 我有两个非常相似的自签名证书,通过两种不同的方法生成。 为了测试它们,我有: 在我的主机文件中为local.mydomain.com添加了一个条目 设置一个nginx服务器,用测试中的证书和相关的私钥监听端口443上的域(然后切换证书并重启nginx进行比较) 连接到nginx与 一个证书失败: 一个证书成功: 我将证书的详细信息与 失败的证书: 工作证书: 综上所述,最明显的区别是,工作证书在

  • 我有一个API通过apigateway服务,使用AWS_IAM身份验证。我希望使用lambda授权程序,这样我就可以实现自定义授权。我意识到我可以使用认知或自定义OAuth应用程序,并让我的客户发送相关的授权令牌。 但是,我当前的客户端已经发送了一个AWS v4签名(用于AWS_IAM实现),我可以使用它来识别用户并验证签名是否有效吗? 在授权程序lambda中收到的令牌如下所示:

  • 我有用于测试的开发人员服务器。它们具有SSL自签名证书,允许我们通过HTTPS测试web应用程序,但带有证书不可验证的显著警告。 这很好,但我有一个服务工作者会用抛出一个错误 SecurityError:无法注册ServiceWorker:获取脚本时发生SSL证书错误。 如何将服务工作者与具有自签名证书的intranet测试服务器一起使用?