web-dev-qa-db-fra.com

Comment imprimer la clé publique d'un certificat à l'aide de keytool?

Existe-t-il un moyen dans keytool d'imprimer la clé publique d'un certificat? J'ai essayé:

keytool -printcert -file client.crt

Mais il ne donne que les informations suivantes:

Owner: CN=client, OU=as, O=as, L=as, ST=as, C=as
Issuer: EMAILADDRESS=as, CN=ca, OU=as, O=as, L=as, ST=as, C=as
Serial number: 3
Valid from: Tue Apr 10 12:18:47 GMT+05:30 2012 until: Wed Apr 10 12:18:47 GMT+05
:30 2013
Certificate fingerprints:
         MD5:  26:C0:29:E9:8C:AB:C3:9E:95:38:74:8A:87:D3:86:8D
         SHA1: 5C:5A:BA:47:44:83:7E:CB:48:BE:DD:E5:39:51:24:42:C6:C5:60:8B
         SHA256: DA:26:B8:C8:F4:04:3E:62:F3:7F:3B:EC:1D:9F:85:66:28:00:45:55:66:
15:FF:BB:37:77:97:59:F0:EC:0B:B6
         Signature algorithm name: SHA1withRSA
         Version: 1

Il n'y a pas de clé publique là-dedans.

27
Ashwin

Vous pouvez le faire avec openssl.

Si ce certificat est codé DER (binaire), utilisez:

openssl x509 -inform der -in client.crt -pubkey -noout

pour une utilisation codée PEM -inform pem option (ou pas -inform du tout).

Pour voir les détails de la clé publique, utilisez:

openssl x509 -inform der -in client.crt -pubkey -noout | openssl rsa -pubin -text -noout
28
Grzegorz Grzybek

Vous pouvez le faire avec:

keytool -list -rfc -keystore mykeystore.jks -alias certificate_alias -storepass password

Exemple d'exécution:

PS c:\sample> keytool -list -rfc -keystore mykeystore.jks -alias cert_alias -storepass password
Alias name: cert_alias
Creation date: Apr 25, 2014
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
-----BEGIN CERTIFICATE-----
MIIB4zCCAUygAwIBAgIIRzI14w7rL20wDQYJKoZIhvcNAQENBQAwMzELMAkGA1UEBhMCVVMxDTAL
BgNVBAoTBE5vbmUxFTATBgNVBAMTDE5vbmUgb3U9Tm9uZTAgFw0xNDA0MjQxNzQ0NDJaGA8yMTE0
MDQyNTE3NDQ0MlowMzELMAkGA1UEBhMCVVMxDTALBgNVBAoTBE5vbmUxFTATBgNVBAMTDE5vbmUg
b3U9Tm9uZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAivXBBtFnJTm1NbHysv3Mnpn/lCg6
1onJDxr/jkvI8+1Bljs1jktyYOeKDWxJwpDU7QyIqttgtDvRT4Yaew5WiQyADIyY0cBTvp3S7uKx
M5C3zxZdG6WTflU7xcYnGk3/d0VhwA6BL9YPsRaS/K+ww1yvxWKIOPW68wDe0ccvGWcCAwEAATAN
BgkqhkiG9w0BAQ0FAAOBgQB/5qDMA9fmlCWlOD9aHjBD6I8zAOSshMCFK8XcZJHowag8WtZyL3DR
insx2HoDlBewIJAEtAplo2NpeFyNtK93PS7zV+vwEYHCu46Db3klMksp3MmSXD39QPlmwfsGZlja
K8Ww0TsR5GtccFMH41KKa+PlvVZNEdZumdrca59olQ==
-----END CERTIFICATE-----
54
Vlad Sankin

Vous pouvez imprimer le certificat au format pem, puis utiliser openssl pour imprimer la clé publique à partir du format pem.

  1. ajouter -rfc option pour -printcert

    keytool -printcert -rfc -file client.crt

  2. enregistrer la sortie comme ci-dessous dans un fichier client.pem

    ----- COMMENCER LE CERTIFICAT ----- MIIB4zCCAUygAwIBAgIIRzI14w7rL20wDQYJKoZIhvcNAQENBQAwMzELMAkGA1UEBhMCVVMxDTAL

    ......

    ----- CERTIFICAT FINAL -----

  3. puis utilisez openssl

    openssl x509 -inform pem -text -in client.pem

vous avez donc la clé publique

7
byron he

Keytool list rfc affiche simplement la version encodée en base64 du certificat entier, pas la clé publique. Keytool ne prend pas en charge l'impression de la clé publique du certificat. Nous pouvons utiliser openssl à cet effet.

5
Hemanth AVS