什么是公钥标题和公钥信息?

问题描述 投票:1回答:1

我试图找到什么是公钥标题和公钥信息。我使用openssl以及公钥模数转储了C格式的证书。它将公钥信息和公钥头列为公钥。但是我无法使用openssl.exe rsa -pubin -inform DER -text -noout < publickey.der将这些字段转储到我的服务器上生成的公钥。

请问有什么可以解释这些字段在数字证书中的重要性,它们对所有公钥是否相同?无法在openssl上获取此信息,只是提到DER编码将具有额外的页眉和页脚。

openssl cryptography rsa
1个回答
1
投票

我从来没有听说过公钥标题......你能举个例子吗?

公钥信息可能是通常以SubjectPublicKeyInfo attribute的形式编码X.509证书中的公钥的标准方式。这些SubjectPublicKeyInfos可以变成一个公钥文件(我假设你正在尝试做什么?如果我错了,请纠正我!)该部分还告诉你在哪里可以找到有关特定算法的信息,对于RSA他们参考RFC 3279。 SubjectPublicKeyInfo定义如下:

SubjectPublicKeyInfo  ::=  SEQUENCE  {
    algorithm            AlgorithmIdentifier,
    subjectPublicKey     BIT STRING  } 

RFC 3279说:

rsaEncryption OID旨在用于AlgorithmIdentifier类型的值的算法字段中。对于该算法标识符,参数字段必须具有ASN.1类型NULL。

进一步:

RSA公钥必须使用ASN.1类型RSAPublicKey进行编码:

  RSAPublicKey ::= SEQUENCE {
     modulus            INTEGER,    -- n
     publicExponent     INTEGER  }  -- e

所以它是包含相关数据的subjectPublicKey字段 - 例如,您可以使用OpenSSL的x509命令获取这些值:

openssl x509 -in certificate.cer -inform DER -noout -text

打印出来(对于PEM证书,删除-inform DER):

Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (1024 bit)
            Modulus:
                00:cb:c2:...
            Exponent: 65537 (0x10001)

如何使用x509直接生成PEM RSA公钥文件还有一个巧妙的技巧:

openssl x509 -inform DER -in certificate.cer -pubkey -noout > pubkey.pem

并且您的公钥以PEM编码方式导出。

© www.soinside.com 2019 - 2024. All rights reserved.