【问题标题】:What are Public key header and public key info?什么是公钥头和公钥信息?
【发布时间】:2012-06-04 11:16:47
【问题描述】:

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

能否解释一下数字证书中这些字段的意义是什么,它们对于所有公钥都相同吗?无法在 openssl 上获取此信息,只是提到 DER 编码将有额外的页眉和页脚。

【问题讨论】:

    标签: openssl cryptography rsa


    【解决方案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 编码导出。

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2021-11-01
      • 2013-04-16
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2021-11-27
      • 2011-09-23
      • 2013-07-09
      相关资源
      最近更新 更多