Codeondertekening voor Android

In dit artikel komt u meer te weten over hoe u apps met code ondertekent voor Android (APK). U moet uw app voor Android ondertekenen als u Android als een van de platforms hebt geselecteerd tijdens het maken en bouwen van uw verpakkingsproject.

Belangrijk

Als u in plaats daarvan een AAB-app voor Google Play-distributie wilt ondertekenen, raadpleegt u Uw app ondertekenen.

Uw pc voorbereiden

U hebt de volgende informatie nodig om aan de slag te gaan:

Sleutels genereren

Notitie

Ga naar Het APK-pakket ondertekenen als u al sleutels en handtekeninghash hebt gegenereerd tijdens het uitvoeren van de app-registratie.

We gebruiken keytool.exe (beschikbaar na installatie van Android Studio, via de maplocatie "Station:\Program Files\Android\Android Studio\jre\bin\keytool.exe") om een certificaat te maken om het toepassingspakket te ondertekenen. Keytool wordt gebruikt om een keystore (database) met cryptografische sleutels, X.509-certificaatketens en vertrouwde certificaten te beheren.

Om een sleutel te genereren, opent u een opdrachtprompt en voert u de volgende opdracht uit:

keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

Parameters:

  • genkey: opdracht om een sleutel te genereren.
  • alias: geeft de alias aan die in de toekomst moet worden gebruikt om te verwijzen naar het keystore-item dat de sleutels bevat die worden gegenereerd.
  • keyalg; naam van sleutelalgoritme.
  • keystore: de naam van de keystore die u gebruikt.
  • keysize: de grootte van elke te genereren sleutel.
  • validity: geldigheid van de sleutel in het aantal dagen.

Voorbeeld:

  • Bij het voorbereiden van Key Vault moet PATH_TO_KEYSTORE de extensie .pfx hebben.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • Als u zich voorbereidt op handmatige ondertekening, moet PATH_TO_KEYSTORE de extensie .jks hebben.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000

Een schermopname met de keytool-opdracht met de parameters uit het bovenstaande voorbeeld.

Handtekeninghash genereren

Notitie

Ga naar Het APK-pakket ondertekenen als u al sleutels en handtekeninghash hebt gegenereerd tijdens het uitvoeren van de app-registratie.

Na het genereren van de sleutel wordt de opdracht exportcert in keytool gebruikt om het keystore-certificaat te exporteren.

keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

Parameters:

  • exportcert: leest uit de keystore het certificaat dat bij de alias hoort en slaat het op in het bestand cert_file. Als geen bestand is opgegeven, wordt het certificaat uitgevoerd naar stdout.
  • alias: de alias die is gebruikt bij het genereren van sleutels eerder.
  • keystore: de naam van de keystore die u gebruikt.
  • openssl: genereert SHA1-sleutel voor Android.

Voeg de gegenereerde handtekeninghash toe in Omleidings-URI tijdens het registreren van de app.

SHA1 hex handmatig converteren naar Base64-gecodeerde handtekeninghash

Mogelijk ziet u de volgende fout als uw handtekeninghash niet correct is gecodeerd of onacceptabel is in de Azure-portal:

"De handtekeninghash moet base64-gecodeerde SHA1 zijn."

Wanneer deze fout verschijnt, probeert u in plaats daarvan de handtekeninghash te genereren met behulp van de volgende stappen:

  1. Voer keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE uit om de certificaatinformatie in uitgebreide modus weer te geven.
  2. Kopieer de SHA1-waarde onder de sectie Certificaatvingerafdrukken uit de uitvoer. Zorg ervoor dat u alleen de hexadecimale waarde kopieert.
    Bijvoorbeeld: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. Gebruik een beschikbare "Hexadecimaal naar Base64"-converter om de gekopieerde hexadecimale waarde van de certificaatvingerafdruk om te zetten in een waarde in Base64-codering.
    Voorbeeld van de in Base64 gecodeerde waarde: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. Kopieer de gegenereerde Base64-gecodeerde waarde als de handtekeninghash in de Azure-portal tijdens het registreren van de app.

Het APK-pakket ondertekenen

U kunt het apksigner-hulpprogramma gebruiken om het APK-pakket te ondertekenen. Dit hulpprogramma stelt u in staat APK's te ondertekenen en ervoor te zorgen dat de handtekening van het APK-pakket wordt geverifieerd op alle Android-platforms die door de APK's worden ondersteund.

Uw apksigner vinden

  1. Controleer het Android SDK-pad in Android Studio.

  2. Selecteer Hulpmiddel > SDK Manager > Android SDK-locatie.

    Als u iOS gebruikt, controleert u het apksigner-bestand in de map buildTools-versie:

    Ga naar de map SDK > build-tools > buildToolsVersion > lib en controleer het bestand apksigner.jar

Het apksigner-bestand gebruiken

Voer de volgende opdracht uit om apksigner te gebruiken en het pakket te ondertekenen:

apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

Parameters:

  • ks: pad naar de keystore.
  • ks-key-alias: sleutelaliaspad naar APK-bestand.

Voer het wachtwoord in wanneer daarom wordt gevraagd.

Meer informatie: Android Studio-opdrachtregelprogramma's: apksigner

De app distribueren

U kunt het pakket hosten op een distributieservice zoals App Center. Zie Een Line-Of-Business-app vanuit Android toevoegen aan Microsoft Intune als u wilt distribueren met Microsoft Intune. Als u wilt weten hoe u een app toegang kunt geven tot de Intune-app-beveiligingsservice, raadpleegt u het artikel Uw app toegang geven tot de Intune app-beveiligingsservice.

Zie ook