cymraeg | česky | deutsch | english | español | français | nederlands | português --- Další návody pro Android
Import certifikátů CAcert do telefonů a tabletů Android
Popis
Pomocí tohoto skriptu (batch souboru) lze importovat kořenový certifikát CAcert do mobilního zařízení.
Požadované soubory budou staženy automaticky. Jsou-li potřebná hesla, budou vyžádána.
Musíte-li kopírovat do telefonu svoje osobní certifikáty, uložte je do podadresáře Own (vlastní). Tento podadresář by měl být tentýž, kde je uložen soubor skriptu. Formát souboru(ů) musí být .p12 .
Testováno na Windows 7 Home Professional x64
Skript můžete stáhnout z odkazu za koncem zdrojového kódu.
@ECHO OFF
CLS
REM ##########################################################################################################################################
REM ### (c) 2013 Andreas Terpotiz <andreas.terpotiz@cacert.org> ###
REM ##########################################################################################################################################
REM ### Funkce: Aktualizace certifikátů CA na mobilním zařízení Android. ###
REM ### Předpoklad: Přístup k Internetu ###
REM ### wget: http://downloads.sourceforge.net/project/gnuwin32/wget/1.11.4-1/wget-1.11.4-1-bin.zip?r=&ts=1357593613&use_mirror=netcologne ###
REM ### Heslo k souboru s vlastním certifikátem a heslo Keystore mobilu je třeba zadat ručně ###
REM ##########################################################################################################################################
REM ######################################################################################################################
SET /P WGET_PATH="Kde je umístěn spustitelný soubor WGET.EXE? "
IF NOT EXIST "%WGET_PATH%\wget.exe" CALL :ERROR_MSG "WGET.EXE nebyl nalezen."
REM ######################################################################################################################
REM Download potřebných souborů
ECHO Stahuji potřebné soubory...
"%WGET_PATH%\wget" -qc http://stahlforce.com/dev/unzip.exe
"%WGET_PATH%\wget" -qc http://dottech.org/downloads/adb_fastboot_and_other_tools.zip
unzip -qq adb_fastboot_and_other_tools.zip
MOVE adb_fastboot_and_other_tools adb 2>NUL 1>&2
SET PATH=%PATH%;%CD%\adb\android
IF EXIST "%ProgramFiles(x86)%\java\j*" GOTO SET_JAVA
IF EXIST "%ProgramFiles%\java\j*" GOTO SET_JAVA
CALL :ERROR_MSG "Java není nainstalována"
:SET_JAVA
SET OLD_DIR="%CD%"
CD "%ProgramFiles(x86)%\Java\j*"
SET JAVA_HOME="%CD%"
SET PATH=%PATH%;%JAVA_HOME%\bin
CD "%OLD_DIR%"
REM ######################################################################################################################
REM Vytvoření a zápis potřebných souborů
REM Zde je třeba zadat hesla pro přístup ke KeyStore
ECHO "" > cert_passwords_for_store.txt
ECHO changeme >> cert_passwords_for_store.txt
ECHO changeit >> cert_passwords_for_store.txt
REM Zde lze vložit aliasy ke zrušení souborů CAcert po akci
ECHO CACERT3 > cert_alias_to_del.txt
ECHO CACERT >> cert_alias_to_del.txt
ECHO cacertclass3 >> cert_alias_to_del.txt
ECHO cacertclass1 >> cert_alias_to_del.txt
ECHO class3 >> cert_alias_to_del.txt
ECHO root >> cert_alias_to_del.txt
REM Alias pro zrušení souboru vlastního certifikátu po akci
ECHO sso >> cert_alias_to_del.txt
ECHO andreas@terpotiz.net >> cert_alias_to_del.txt
ECHO aterpotiz@terpotiz.net >> cert_alias_to_del.txt
ECHO a.terpotiz@terpotiz.net >> cert_alias_to_del.txt
ECHO terpotiz@buz.at >> cert_alias_to_del.txt
ECHO andreas.terpotiz@live.at >> cert_alias_to_del.txt
ECHO CAcert Inc. ID von Andreas Terpotiz >> cert_alias_to_del.txt
ECHO CAcert Inc. ID von Andreas Terpotiz #5 >> cert_alias_to_del.txt
ECHO CAcert Inc. ID von Andreas Terpotiz #4 >> cert_alias_to_del.txt
ECHO CAcert Inc. ID von Andreas Terpotiz #2 >> cert_alias_to_del.txt
REM Zde jsou příkazy pro zavedení certifikátu do mobilu Android
ECHO su -c "mount -o rw,remount -t rfs /dev/block/stl9 /system" > android.txt
ECHO sleep 5 >> android.txt
ECHO su -c "cat /mnt/sdcard/cacerts.bks > /system/etc/security/cacerts.bks" >> android.txt
ECHO sleep 5 >> android.txt
ECHO su -c "mount -o ro,remount -t rfs /dev/block/stl9 /system" >> android.txt
ECHO sleep 5 >> android.txt
ECHO "reboot" >> android.txt
REM ######################################################################################################################
REM Zkouška mobilu
ECHO Prosím uzamkněte mobil Android.
adb wait-for-device shell exit
ECHO Zavedení seznamu certifikátů z mobilu
adb pull /system/etc/security/cacerts.bks cacerts.bks 2>NUL 1>&2
ECHO Zkouška hesla souboru certifikátu
CALL :CHECK_DL http://bouncycastle.org/download/bcprov-jdk16-141.jar "A/n" A
FOR /F %%a IN (cert_passwords_for_store.txt) DO (
SET PASSWORD=%%a
keytool -keystore cacerts.bks -storetype BKS -providerpath bcprov-jdk16-141.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass %PASSWORD% -v -list 2>NUL 1>&2
IF ERRORLEVEL 0 GOTO WEITER
)
REM Ruční vstup hesla pro Keystore
SET /P PASSWORD="Prosím, zadejte heslo Keystore: " || set PASSWORD=""
keytool -keystore cacerts.bks -storetype BKS -providerpath bcprov-jdk16-141.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass %PASSWORD% -v -list 2>NUL 1>&2
IF %ERRORLEVEL% EQU 0 GOTO WEITER
CALL :ERROR_MSG "Nesprávné heslo"
:WEITER
IF %PASSWORD%=="" (ECHO Prázdné heslo pro soubor certifikátů) ELSE ECHO Heslo: %PASSWORD%
REM ######################################################################################################################
REM ################################################
REM ### Maže se certifikát s názvem ALIAS ###
REM ################################################
:DEL_CERT
SET /P DEL_CERT="Smazat starý certifikát?(A/n): " || SET DEL_CERT=a
IF /I "%DEL_CERT%" EQU "a" ( GOTO DEL_CERT_YES ) ELSE ( GOTO DEL_CERT_NO )
GOTO DEL_CERT
:DEL_CERT_YES
ECHO Výmaz případně existujícího starého certifikátu
FOR /F %%a IN (cert_alias_to_del.txt) DO @keytool -keystore cacerts.bks -storetype BKS -providerpath bcprov-jdk16-141.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass %PASSWORD% -alias %%a -delete 2>NUL 1>&2
:DEL_CERT_NO
REM ######################################################################################################################
REM ######################################
REM ### Import certifikátu CAcert ###
REM ######################################
:CACERT_IMP
SET /P CACERT_IMP="Importovat certifikát CAcert?(A/n): " || SET CACERT_IMP=a
IF /I "%CACERT_IMP%" EQU "a" ( GOTO CACERT_IMP_YES) ELSE ( GOTO CACERT_IMP_NO )
GOTO CACERT_IMP
:CACERT_IMP_YES
ECHO Importovat certifikáty CAcert
"%WGET_PATH%\wget" -qc http://www.cacert.org/certs/root_X0F.crt
"%WGET_PATH%\wget" -qc http://www.cacert.org/certs/class3_x14E228.crt
FOR /F "tokens=*" %%a in ('dir /b /a-d *.crt') DO @keytool -keystore cacerts.bks -storetype BKS -providerpath bcprov-jdk16-141.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass %PASSWORD% -importcert -trustcacerts -alias "%%~na" -file %%a -v -noprompt
:CACERT_IMP_NO
REM ######################################
REM ### Import vlastních certifikátů ###
REM ######################################
:CACERT_IMP
SET /P CACERT_IMP="Importovat vlastní certifikáty?(a/N): " || SET CACERT_IMP=n
IF /I "%CACERT_IMP%" EQU "a" ( GOTO CACERT_IMP_YES) ELSE ( GOTO CACERT_IMP_NO )
GOTO CACERT_IMP
:CACERT_IMP_YES
ECHO Importuji vlastní certifikáty
REM Nastavení hesel pro vlastní certifikáty
set /P CERTPASS="Prosím vložte heslo vlastního certifikátu: " || set /P CERTPASS=undef
FOR /F "tokens=*" %%a in ('dir /b /a-d Own\*.p12') DO @keytool -importkeystore -srckeystore Own\%%a -srcstoretype pkcs12 -srcstorepass %CERTPASS% -providerpath bcprov-jdk16-141.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider -destkeystore cacerts.bks -deststoretype BKS -deststorepass %PASSWORD% -noprompt
:CACERT_IMP_NO
REM ######################################################################################################################
ECHO Zápis seznamu certifikátů na SD kartu mobilu
adb push cacerts.bks /mnt/sdcard/ 2>NUL 1>&2
ECHO Práce s mobilem skončila
adb shell < android.txt
GOTO ENDE
REM ######################################################################################################################
REM ######################
REM ### Podprogramy ###
REM ######################
:CHECK_DL
SETLOCAL
:START
SET /P CHKDL="Download z %1 %2" || SET CHKDL=%3
IF /I "%CHKDL%" EQU "a" ( GOTO CHKDL_DL) ELSE ( GOTO CHKDL_END )
GOTO START
:CHKDL_DL
ECHO Stažení "%1"
"%WGET_PATH%\wget" -qc "%1"
IF ERRORLEVEL 1 CALL :ERROR_MSG "%1 nelze stáhnout"
:CHKDL_END
ENDLOCAL
GOTO:EOF
:ERROR_MSG
CLS
ECHO "%~1"
ECHO Skript byl přerušen.
EXIT
REM ######################################################################################################################
:ENDE
DEL /F /S /Q adb 2>NUL 1>&2 & RD /S /Q adb 2>NUL 1>&2
DEL adb_fastboot_and_other_tools.zip 2>NUL 1>&2
DEL unzip.exe 2>NUL 1>&2
DEL cert_passwords_for_store.txt 2>NUL 1>&2
DEL cert_alias_to_del.txt 2>NUL 1>&2
DEL android.txt 2>NUL 1>&2
DEL cacerts.bks 2>NUL 1>&2
DEL class3_x14E228.crt 2>NUL 1>&2
DEL root_X0F.crt 2>NUL 1>&2
DEL bcprov-jdk16-141.jar 2>NUL 1>&2
Zdrojový text lze zkopírovat a uložit pomocí programu Wordpad jako "textový dokument ve formátu MS-DOS". Pak budou správně i písmena s diakritickými znaménky.
Soubor pro download je již ve správném formátu.