Jak importovat kořenový certifikát CAcert do starší verze Androidu před 'Ice Cream Sandwich' ('Gingerbread', 'Froyo', ...

Před Androidem verze 4.0 (zvané "ICS", "Ice Cream Sandwich") existoval jediný soubor, určený jen pro čtení (read-only): /system/etc/security/cacerts.bks obsahující důvěryhodné úložiště s certifikáty všech CA, kterým Android standardně důvěřuje. Používaly ho jak systémové aplikace, tak aplikace vyvíjené nástrojem Android SDK (Software Development Kit).

Způsob 1: Android verze 4.0 a vyšší

Viz hlavní článek o importu kořenových certifikátů CAcert do Androidu - Import kořenových certifikátů

Způsob 2: Android SDK

Předpoklady:

Krok 1: Získat potřebné soubory

Krok 2: Zavést cacerts.bks z telefonu

$ adb pull /system/etc/security/cacerts.bks cacerts.bks
407 KB/s (51899 bytes in 0.124s)

(Velikost souboru a přenosová rychlost se mohou lišit)

Krok 3: Importovat kořenové certifikáty CAcert do cacerts.bks

$ keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -importcert -trustcacerts -alias CACERT -file root_X0F.crt
Owner: EMAILADDRESS=support@cacert.org, CN=CA Cert Signing Authority, OU=http://www.cacert.org, O=Root CA
Issuer: EMAILADDRESS=support@cacert.org, CN=CA Cert Signing Authority, OU=http://www.cacert.org, O=Root CA
Serial number: 0
Valid from: Sun Mar 30 09:29:49 GMT-03:00 2003 until: Tue Mar 29 09:29:49 GMT-03:00 2033
Certificate fingerprints:
 /!\     MD5:  A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B                /!\  NAHRAZENO SHA256: + <"otisk prstu">
         SHA1: dd:fc:da:54:1e:75:77:ad:dc:a8:7e:88:27:a9:8a:50:60:32:52:a5
         Signature algorithm name: SHA256RSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 16 B5 32 1B D4 C7 F3 E0   E6 8E F3 BD D2 B0 3A EE  ..2...........:.
0010: B2 39 18 D1                                        .9..
]
]

#3: ObjectId: 2.16.840.1.113730.1.8 Criticality=false

#4: ObjectId: 2.16.840.1.113730.1.4 Criticality=false

#5: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: https://www.cacert.org/revoke.crl]
]]

#6: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 16 B5 32 1B D4 C7 F3 E0   E6 8E F3 BD D2 B0 3A EE  ..2...........:.
0010: B2 39 18 D1                                        .9..
]

[EMAILADDRESS=support@cacert.org, CN=CA Cert Signing Authority, OU=http://www.cacert.org, O=Root CA]
SerialNumber: [    00]
]

#7: ObjectId: 2.16.840.1.113730.1.13 Criticality=false

Trust this certificate? [no]:  yes
Certificate was added to keystore

Krok 4: Ověřit úspěšnost importu

$ keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -v -list| grep -i cacert
Alias name: CACERT
Owner: O=Root CA,OU=http://www.cacert.org,CN=CA Cert Signing Authority,E=support@cacert.org
Issuer: O=Root CA,OU=http://www.cacert.org,CN=CA Cert Signing Authority,E=support@cacert.org

Volitelně: Opakujte kroky 3 a 4 pro class3_X0E.crt, použijte -alias CACERT3. Při ověření by se měly vypsat oba certifikáty.

Krok 5: Zavést doplněný soubor cacerts.bks zpět do telefonu

Pro zápis do systémového oddílu telefonu (/system) ho musíte připojit s právy čtení a zápisu (read-write).

# remount /system read-write
$ adb shell mount -o remount,rw /system

Pokud tento příkaz u Vašeho telefonu nefunguje, použijte příkaz mount ke zjištění, jak je /system připojen. Například u telefonu Samsung Galaxy S zjistíte systém souborů rfs a funguje zde syntaxe

mount -o rw,remount -t rfs /dev/block/stl9 /system

# nahrejte nový soubor s certifikáty
$ adb push cacerts.bks /system/etc/security/
780 KB/s (53788 bytes in 0.067s)

# remount /system read-only
$ adb shell mount -o remount,ro /system
## Samsung Galaxy: mount -o ro,remount -t rfs /dev/block/stl9 /system

Krok 6: Rebootovat telefon

Reboot zajistí, že se zavede nový seznam certifikátů.

Zkuste https://www.cacert.org (výstraha by měla zmizet)

Způsob 3: Android Terminal Emulator

Předpoklady:

Krok 1: Získat potřebné soubory

Krok 2: Zavést cacerts.bks z telefonu

Zkopírujte soubor do svého počítače:

cp /system/etc/security/cacerts.bks /sdcard/
407 KB/s (51899 bytes in 0.124s)

Krok 3: Importovat kořenové certifikáty CAcert do souboru cacerts.bks

Stejné jako u způsobu 1.

Krok 4: Zavést cacerts.bks do telefonu

Zavést doplněný soubor cacerts.bks zpět do telefonu. Proveďte příkazy uvedené dříve v Kroku 4 přímo ve svém terminálovém emulátoru Androidu. (Tak jak uvedeno výše, zjistěte, jak je oddíl /system připojen.)

mount -o remount,rw /system
## nebo na Galaxy S se systémem souborů rfs: mount -o rw,remount -t rfs /dev/block/stl9 /system

## zaveďte nový soubor certifikátů:
cp /sdcard/cacerts.bks /system/etc/security/
780 KB/s (53788 bytes in 0.067s)

# připojte /system opět jako read-only
mount -o remount,ro /system
## nebo: mount -o ro,remount -t rfs /dev/block/stl9 /system

Krok 5: Rebootovat telefon

Viz způsob 1!

Jak-na-to v němčině


FAQ/ImportRootCertAndroidPreICS/CZ (last edited 2020-01-06 13:13:23 by AlesKastner)