À l'aide de Château Gonflable pour extraire les informations de certificat à partir d'android
Je suis en train d'utiliser château gonflable pour lire le contenu de CERT.RSA dans Android apk fichier.
En utilisant : openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text
Je suis obtenir la suivante, ce qui semble correct :
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
93:6e:ac:be:07:f2:01:df
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, ST=California, L=Mountain View, O=Android, OU=Android, CN=Android/emailAddress=android@android.com
Validity
Not Before: Feb 29 01:33:46 2008 GMT
Not After : Jul 17 01:33:46 2035 GMT
Subject: C=US, ST=California, L=Mountain View, O=Android, OU=Android, CN=Android/emailAddress=android@android.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:d6:93:19:04:de:c6:0b:24:b1:ed:c7:62:e0:d9:
d8:25:3e:3e:cd:6c:eb:1d:e2:ff:06:8c:a8:e8:bc:
a8:cd:6b:d3:78:6e:a7:0a:a7:6c:e6:0e:bb:0f:99:
35:59:ff:d9:3e:77:a9:43:e7:e8:3d:4b:64:b8:e4:
fe:a2:d3:e6:56:f1:e2:67:a8:1b:bf:b2:30:b5:78:
c2:04:43:be:4c:72:18:b8:46:f5:21:15:86:f0:38:
a1:4e:89:c2:be:38:7f:8e:be:cf:8f:ca:c3:da:1e:
e3:30:c9:ea:93:d0:a7:c3:dc:4a:f3:50:22:0d:50:
08:07:32:e0:80:97:17:ee:6a:05:33:59:e6:a6:94:
ec:2c:b3:f2:84:a0:a4:66:c8:7a:94:d8:3b:31:09:
3a:67:37:2e:2f:64:12:c0:6e:6d:42:f1:58:18:df:
fe:03:81:cc:0c:d4:44:da:6c:dd:c3:b8:24:58:19:
48:01:b3:25:64:13:4f:bf:de:98:c9:28:77:48:db:
f5:67:6a:54:0d:81:54:c8:bb:ca:07:b9:e2:47:55:
33:11:c4:6b:9a:f7:6f:de:ec:cc:8e:69:e7:c8:a2:
d0:8e:78:26:20:94:3f:99:72:7d:3c:04:fe:72:99:
1d:99:df:9b:ae:38:a0:b2:17:7f:a3:1d:5b:6a:fe:
e9:1f
Exponent: 3 (0x3)
X509v3 extensions:
X509v3 Subject Key Identifier:
48:59:00:56:3D:27:2C:46:AE:11:86:05:A4:74:19:AC:09:CA:8C:11
X509v3 Authority Key Identifier:
keyid:48:59:00:56:3D:27:2C:46:AE:11:86:05:A4:74:19:AC:09:CA:8C:11
DirName:/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com
serial:93:6E:AC:BE:07:F2:01:DF
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
7a:af:96:8c:eb:50:c4:41:05:51:18:d0:da:ab:af:01:5b:8a:
76:5a:27:a7:15:a2:c2:b4:4f:22:14:15:ff:da:ce:03:09:5a:
bf:a4:2d:f7:07:08:72:6c:20:69:e5:c3:6e:dd:ae:04:00:be:
29:45:2c:08:4b:c2:7e:b6:a1:7e:ac:9d:be:18:2c:20:4e:b1:
53:11:f4:55:d8:24:b6:56:db:e4:dc:22:40:91:2d:75:86:fe:
88:95:1d:01:a8:fe:b5:ae:5a:42:60:53:5d:f8:34:31:05:24:
22:46:8c:36:e2:2c:2a:5e:f9:94:d6:1d:d7:30:6a:e4:c9:f6:
95:1b:a3:c1:2f:1d:19:14:dd:c6:1f:1a:62:da:2d:f8:27:f6:
03:fe:a5:60:3b:2c:54:0d:bd:7c:01:9c:36:ba:b2:9a:42:71:
c1:17:df:52:3c:db:c5:f3:81:7a:49:e0:ef:a6:0c:bd:7f:74:
17:7e:7a:4f:19:3d:43:f4:22:07:72:66:6e:4c:4d:83:e1:bd:
5a:86:08:7c:f3:4f:2d:ec:21:e2:45:ca:6c:2b:b0:16:e6:83:
63:80:50:d2:c4:30:ee:a7:c2:6a:1c:49:d3:76:0a:58:ab:7f:
1a:82:cc:93:8b:48:31:38:43:24:bd:04:01:fa:12:16:3a:50:
57:0e:68:4d
Mais je n'ai pas la clé publique de module et les autres choses nécessaires lorsque je suis en utilisant le Château Gonflable. Le pubkey est juste nul. Je suppose que j'ai fait une erreur dans le code, mais c'est bizarre que je reçois tout ce que je veux, à l'exception de la clé publique.
X509CertParser certParser = new X509CertParser();
FileInputStream stream;
X509CertificateObject cert= null;
try {
stream = new FileInputStream("CERT.RSA");
certParser.engineInit(stream);
cert = (X509CertificateObject) certParser.engineRead();
stream.close();
if(cert.getPublicKey()==null)System.out.println("NULL");
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
Ce code affiche NULL, tandis que la openssl appel me dit que le module etc.
Que dois-je faire pour obtenir le pubkey en Java ? (peut-être qu'il est possible d'utiliser le kit sdk d'android ou autre chose pour obtenir les données au lieu de château gonflable)
Edit:
J'ai oublié de mentionner que j'ai déjà essayé David Subventions de code, ce qui me donne le message d'erreur, que le DerInputStream est trop gros:
java.security.cert.CertificateException: Unable to initialize, java.io.IOException: DerInputStream.getLength(): lengthTag=127, too big.
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:199)
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:107)
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:322)
J'ai eu cette erreur aussi
OriginalL'auteur Christian | 2012-10-09
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de la colombie-britannique pendant la lecture d'un certificat à partir d'une DER des flux, vous pouvez le faire très bien dans Java SE:
Quel est le CERT.RSA fichier contenant en fait?
OriginalL'auteur David Grant
Si vous êtes fixé sur l'utilisation de BouncyCastle, vous pourriez essayer d'utiliser le
PEMReader
classe. (Clairement votre certificat doit être au format PEM, pas DER).Pour une raison quelconque, le code que vous avez posté juste de ne pas sucer la clé publique. Je n'ai aucune idée pourquoi.
OriginalL'auteur Duncan Jones
L'APK est tout simplement un fichier jar. Utiliser le Jarfiles à l'analyser, puis la liste la JarEntry's, l'appel de la
getCertifiates()
méthode pour obtenir des certificats de signature. Il n'y a généralement qu'un seul. Vous pouvez lancer àX509Certifiate
pour obtenir toutes les informations de certificat. Notez que vous n'avez pas à extraire le CERT.RSA fichier, il suffit de passer le fichier APK pour leJarFile
constructeur.OriginalL'auteur Nikolay Elenkov
Vous pouvez lire les
CERT.RSA
Fichiers à l'aide de laPKCS7
Méthode:cela va vous renvoyer un Tableau de
X509Certificate
.OriginalL'auteur reox
Dans Android, vous pouvez lire le contenu de la certificat numérique (META-INF/CERT.RSA) d'un package à l'aide de la X509Certificate classe abstraite.
Où la getHex() méthode utilisée pour extraire les hachage SHA-256 du certificat numérique est le suivant:
En outre, vous pouvez extraire toutes les entrées de la propriétaire et la émetteur champs (extraites à l'aide de la getSubjectDN() un la getIssuerDN() méthode de la X509Certificate respectivement), quand ils ne sont PAS nulles, par exemple, en utilisant le code suivant:
OriginalL'auteur Paolo Rovelli