Ultimas do CanalQb

CanalQb - Python - BeeWare e Toga - Assinando Arquivos AAB com Jarsigner para Publicação no Google Play

@CanalQb


CanalQb - Python - BeeWare e Toga - Assinando Arquivos AAB com Jarsigner para Publicação no Google Play



CanalQb



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


Vamos criar certificação necessária para este arquivo

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
keytool -export -alias canalqb -keystore "canalqb.keystore" -file "canalqb_cert.crt"


 

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.