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

时间:2012-05-30 08:24:58

标签: openssl cryptography rsa

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

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

1 个答案:

答案 0 :(得分:1)

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

公钥信息可能是X.509证书中公钥通常以SubjectPublicKeyInfo attribute的形式编码的标准方式。这些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编码方式导出。