CanalQb - Python - BeeWare e Toga - Assinando Arquivos AAB com Jarsigner para Publicação no Google Play
CanalQb - Python - BeeWare e Toga - Assinando Arquivos AAB com Jarsigner para Publicação no Google Play
Sempre crie uma frase de segurança única para jogos, Airdrops e qualquer outra coisa de origem desconhecida, em vez de usar sua carteira principal.
Nas postagens anteriores, eu apresentei para vocês como
Como Criar um Arquivo Android Keystore: https://bit.ly/3YHI7KX
Enviando seu Keystore para o Google Play Console: https://bit.ly/3Uv3ZqB
Agora vamos começar do 0, pois já temos a total noção do que precisamos, correto.
Para compilar meu script Python usando o Beeware e o Toga eu usei o comando, na pasta raiz do script:
briefcase package android
Ele gera um script dentro da pasta dist
1. Criando o arquivo keystore
Agora vou criar o keystore para ele, usando o método do https://bit.ly/3YHI7KX ou usando o comando abaixo
keytool -genkeypair -v -keystore "canalqb.keystore" -alias canalqb -keyalg RSA -keysize 2048 -validity 10000
Este comando gera um novo keystore.
2. Criando o certificado
Listando o Keystore
keytool -list -cacerts -storepass changeit
Correto. Este comando lista os certificados existentes no keystore cacerts.
Exportando o Certificado
keytool -export -alias canalqb -keystore "canalqb.keystore" -file "canalqb_cert.crt" -storepass XXX
ou sem senha no link
Atenção: Use a senha correta do seu keystore no storepass, se não, ajuste a senha.
Importando o Certificado
keytool -import -alias canalqb -file "canalqb_cert.crt" -keystore "c:\Program Files\Java\jdk-23\lib\security\cacerts" -storepass changeit
Correto. Este comando importa o certificado para o keystore cacerts.
Removendo Certificado caso já exista
keytool -delete -alias canalqb -cacerts -storepass changeit
Importando o Certificado Após a Remoção
Depois de remover o alias, você pode importar o novo certificado usando:
keytool -import -alias canalqb -file "canalqb_cert.crt" -cacerts -storepass changeit -noprompt
3. Certificando o arquivo AAB
Assinando o arquivo
jarsigner -verbose -sigalg SHA384withRSA -digestalg SHA-256 -keystore canalqb.keystore -tsa http://timestamp.digicert.com "Canalqb Puzzle-0.0.1.aab" canalqb
Correto. Este comando assina o arquivo AAB.
Verificando a Assinatura
jarsigner -verify -verbose -certs "Canalqb Puzzle-0.0.1.aab"
Correto. Este comando verifica a assinatura do arquivo AAB.
Lembre que todo esse processo nos obriga, a refazer o procedimento do Google Play Console
Algumas dicas sobre o TOGA, BEEWARE e o GOOGLE PLAY CONSOLE: https://bit.ly/4fao7Xm
1. Exportação do Certificado
keytool -export -alias canalqb -keystore "canalqb.keystore" -file "canalqb_cert.crt" -storepass XXX
Objetivo: Este comando é usado para exportar um certificado associado a um alias específico (neste caso, canalqb) de um keystore para um arquivo de certificado (canalqb_cert.crt).
Parâmetros:
-export: Indica que você deseja exportar um certificado.
-alias canalqb: Especifica o alias do certificado que você deseja exportar.
-keystore "canalqb.keystore": Indica qual keystore contém o certificado.
-file "canalqb_cert.crt": O nome do arquivo onde o certificado será salvo.
-storepass XXX: A senha do keystore (substitua XXX pela senha real).
2. Importação do Certificado
keytool -import -alias canalqb -file "canalqb_cert.crt" -storepass xxxxxx -noprompt -keystore "canalqb.keystore"
Objetivo: Este comando é usado para importar um certificado de um arquivo (canalqb_cert.crt) para um keystore, associando-o a um alias específico (canalqb).
Parâmetros:
-import: Indica que você deseja importar um certificado.
-alias canalqb: Especifica o alias sob o qual o certificado será armazenado no keystore.
-file "canalqb_cert.crt": O arquivo que contém o certificado que será importado.
-storepass xxxxxx : A senha do keystore.
-noprompt: Faz com que o comando não pergunte por confirmações durante a importação, assumindo que você confia no certificado.
Resumo
Exportar: Retira um certificado do keystore e salva em um arquivo.
Importar: Adiciona um certificado de um arquivo ao keystore.
Salve o arquivo abaixo na mesma pasta que está seu pyproject.toml com nome cer.bat
@echo off
setlocal enabledelayedexpansion
cls
echo Informe sua alias da keystore:
set /p alias_keystore=
echo Informe sua senha de keystore:
set /p senha_keystore=
echo Informe sua senha de key:
set /p senha_key=
briefcase package android
cd dist
:: Verifica se o diretório de backup existe, se não, cria
if not exist "..\backup" (
mkdir "..\backup"
)
:: Copia os arquivos .aab para o diretório de backup
for %%f in (*.aab) do (
copy "%%f" "..\backup"
)
:: Delete existing keystore and certificate if they exist
del /Q %alias_keystore%.keystore
del /Q %alias_keystore%_cert.crt
del /Q output.zip
:: Generate a new keystore and keypair
keytool -genkeypair -v -keystore "%alias_keystore%.keystore" -alias %alias_keystore% -keyalg RSA -keysize 2048 -validity 10000 -storepass %senha_keystore% -dname "CN=%alias_keystore%, OU=%alias_keystore%, O=%alias_keystore%, L=Sao Paulo, ST=Sao Paulo, C=BR"
:: List current certificates (optional)
keytool -list -cacerts -storepass changeit
:: Export the certificate
keytool -export -alias %alias_keystore% -keystore "%alias_keystore%.keystore" -file "canalqb_cert.crt" -storepass %senha_keystore%
:: Import the certificate to the Java cacerts
keytool -import -alias %alias_keystore% -file "canalqb_cert.crt" -keystore "C:\Program Files\Java\jdk-23\lib\security\cacerts" -storepass changeit -noprompt
:: Delete the alias from cacerts (if needed)
keytool -delete -alias %alias_keystore% -cacerts -storepass changeit
:: Re-import the certificate (if necessary)
keytool -import -alias %alias_keystore% -file "canalqb_cert.crt" -cacerts -storepass changeit -noprompt
:: Sign and verify each .aab file
for %%f in (*.aab) do (
set "variavel=%%f"
jarsigner -verbose -sigalg SHA384withRSA -digestalg SHA-256 -keystore %alias_keystore%.keystore -tsa http://timestamp.digicert.com "!variavel!" %alias_keystore% -storepass %senha_keystore%
jarsigner -verify -verbose -certs "!variavel!"
)
rem java -jar ../backup/pepk.jar --keystore=%alias_keystore%.keystore --alias=%alias_keystore% --output=output.zip --include-cert --rsa-aes-encryption --encryption-key-path=../backup/encryption_public_key.pem --keystore-pass=%senha_keystore% --key-pass=%senha_key%
java -jar "../backup/pepk.jar" --keystore="%alias_keystore%.keystore" --alias="%alias_keystore%" --output="output.zip" --include-cert --rsa-aes-encryption --encryption-key-path="../backup/encryption_public_key.pem" --keystore-pass="%senha_keystore%" --key-pass="%senha_key%"
endlocal
Nenhum comentário
Comente só assim vamos crescer juntos!
Observação: somente um membro deste blog pode postar um comentário.