30

我是加密证书的新手,正在尝试找出 Android 应用程序的“./META-INF”文件夹下的“CERT.RSA”文件的组件。

据我了解,“CERT.RSA”用于验证同一目录下“CERT.SF”文件的签名。它应该由证书元信息(主题、颁发者、序列号等)、开发者私钥签名的“CERT.SF”签名以及用于验证签名的公钥组成。

如何从“CERT.RSA”文件中导出上述组件?特别是,如何从“CERT.RSA”中检索公钥?

我尝试使用以下命令来显示签名证书。当人们谈论签名证书时,是(以下输出)公钥还是签名签名?

>> openssl pkcs7 -inform DER -print_certs -out cert.pem -in CERT.RSA
>> cat cert.pem

subject=/C=SE/ST=Kista/L=Kista/O=Javsym/OU=Mobile Visuals/CN=Eyvind Almqvist
issuer=/C=SE/ST=Kista/L=Kista/O=Javsym/OU=Mobile Visuals/CN=Eyvind Almqvist
-----BEGIN CERTIFICATE-----
MIICWzCCAcSgAwIBAgIETVPFgjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJT
RTEOMAwGA1UECBMFS2lzdGExDjAMBgNVBAcTBUtpc3RhMQ8wDQYDVQQKEwZKYXZz
eW0xFzAVBgNVBAsTDk1vYmlsZSBWaXN1YWxzMRgwFgYDVQQDEw9FeXZpbmQgQWxt
cXZpc3QwIBcNMTEwMjEwMTEwMTIyWhgPMjA2MTAxMjgxMTAxMjJaMHExCzAJBgNV
BAYTAlNFMQ4wDAYDVQQIEwVLaXN0YTEOMAwGA1UEBxMFS2lzdGExDzANBgNVBAoT
BkphdnN5bTEXMBUGA1UECxMOTW9iaWxlIFZpc3VhbHMxGDAWBgNVBAMTD0V5dmlu
ZCBBbG1xdmlzdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAjwLlwflQ2zoC
1EeCkICSqYTSkdv6Xj0YCqoQsuLJw0pwDbz5qRos61Ub0ZxWCa4TfXu1NJmuD4j+
LwQYvAR6JO985y4zjH1Ee5qZmHDC5yoSRko6P8B4KfmBm8E8CryhUjN7vNLUfG2o
XrmXK+g5KKTx3wzWlb4+AdAS7/NlDVkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAS
CxdfvR/LHPlULkCsoGw9/Q2ZhsTlPr7fZw32sef9vnz1hqd6iMDsLC2c34yRVJfb
t6dZCVO9/gWMURIZ7NmT36uBFAUB+XkGK+5/ot3YEJicEwmk/Nvj1Tzo3PjBX3ZD
lLBpEPgc3IUOhgMyzDR+ytgFlH0MkDps6FApunUpiQ==
-----END CERTIFICATE-----

通过使用以下命令,我可以获得此证书的元信息:

>> keytool -printcert -file CERT.RSA

Owner: CN=Eyvind Almqvist, OU=Mobile Visuals, O=Javsym, L=Kista, ST=Kista, C=SE
Issuer: CN=Eyvind Almqvist, OU=Mobile Visuals, O=Javsym, L=Kista, ST=Kista, C=SE
Serial number: 4d53c582
Valid from: Thu Feb 10 06:01:22 EST 2011 until: Fri Jan 28 06:01:22 EST 2061
Certificate fingerprints:
     MD5:  58:94:63:63:C1:ED:4C:02:CE:90:CE:64:DA:D7:4A:E4
     SHA1: 17:5C:44:E3:A6:1A:F2:4F:A5:78:6E:C7:F0:42:4C:AD:E6:F5:CA:DF
     Signature algorithm name: SHA1withRSA Version: 3

我可以使用其他工具/命令从“CERT.RSA”获取更完整的信息吗?

非常感谢您的任何投入!

4

4 回答 4

20

如果您只想从 CERT.RSA 文件中获取公钥的一部分,您可以尝试以下方法:

  1. 将 CERT.RSA 转换为标准 pem 文件:

openssl pkcs7 -in CERT.RSA -inform DER -print_certs -out cert.pem

  1. 从 pem 文件中获取公钥:

openssl x509 -in cert.pem -pubkey -noout

于 2015-08-12T02:21:10.857 回答
9

拥有 cert.pem 文件后,您可以使用以下命令获取公钥:

openssl x509 -in cert.pem -noout -text

问候,

朱塞佩

于 2014-06-09T12:12:10.780 回答
5

这应该可以解决您的问题

 openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs 
于 2018-06-27T22:12:52.433 回答
5
  1. 将 CERT.RSA 转换为标准 pem 文件:

openssl pkcs7 -in CERT.RSA -inform DER -print_certs -out cert.pem

  1. 从 pem 文件中获取公钥:

openssl x509 -in cert.pem -pubkey -noout

  1. 将公钥保存到 cert_pub.pem 和签名信息 sign_info 文件中

openssl x509 -noout -text -in cert.pem

  1. 验证哈希

openssl rsautl -verify -inkey cert_pub.pem -pubin -in sign_info -hexdump -raw

openssl dgst -sha256 CERT.RSA

但是,哦不,不匹配!!!

于 2018-06-01T08:38:16.580 回答