我正在尝试查找什么是公钥标头和公钥信息。我使用openssl以及公钥模数转储了C格式的证书。它将公钥信息和公钥头列为公钥。但我无法使用openssl.exe rsa -pubin -inform DER -text -noout < publickey.der
将这些字段转储到我的服务器上生成的公钥。
请问有没有人解释这些字段在数字证书中的重要性,它们对所有公钥是否相同?无法在openssl上获取此信息,只是提到DER编码将有额外的页眉和页脚。
答案 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编码方式导出。