Introductie
De applicaties die u op uw Macintosh (Mac) gebruikt, zijn .app-applicaties. Applicaties die in de Mac App Store worden gebruikt, of gewoon op een Mac in het algemeen, moeten digitaal ondertekend zijn om door het besturingssysteem te kunnen worden gebruikt. Het ondertekenen van deze .app-bestanden door de iOS App Store of met uw eigen tools of codeondertekeningsplatform kan enige tijd in beslag nemen. Sterker nog, veel codeondertekeningsplatforms bieden niet de mogelijkheid om .app-bestanden op een Mac te ondertekenen. Wij van Encryption Consulting hebben het echter mogelijk gemaakt om deze .app-bestanden eenvoudig op uw Mac te ondertekenen. Met CodeSign Secure en onze Apple Signing CSP kunt u snel en efficiënt uw omgeving instellen om .app-bestanden gemakkelijk te ondertekenen.
Een Apple-applicatie ondertekenen met CodeSign Secure, in het kort: Installeer de ECCssProvider CSP op je Mac, authenticeer deze bij CodeSign Secure met een P12-clientcertificaat en voer vervolgens de volgende stappen uit.
codesign -f -s <certificate hash> <path to .app, .dmg, .pkg, .ipa, or .mpkg>De privésleutel verlaat de HSM van CodeSign Secure nooit; de CSP vraagt er alleen een handtekening van op.
Key Takeaways
- In tegenstelling tot Windows, worden gangbare CA-rootketens niet standaard als vertrouwd meegeleverd bij macOS. Als u ondertekent met een OV/EV-certificaat, moet u de volledige certificaatketen zelf importeren in Sleutelhangertoegang, anders kan er met codeondertekening geen vertrouwde handtekening worden gemaakt.
- Het codesign-commando identificeert het te gebruiken certificaat aan de hand van de SHA-1-hash, niet aan de hand van de naam. Controleer daarom altijd de hash via security export-smartcard voordat u ondertekent, in plaats van ervan uit te gaan dat de certificaatvolgorde niet is gewijzigd.
Omgevingsmatrix
| Bestanddeel | eis |
|---|---|
| leverancier | ECCssProvider (CodeSign Secure's Apple CSP), gedownload uit de sectie 'Ondertekeningstools'. |
| authenticatie | Het P12-clientcertificaat, gegenereerd via CodeSign Secure's Gebruiker > Authenticatiecertificaat genereren, is geïmporteerd in de systeemsleutelbos. |
| Certificaatketen | De volledige OV/EV-keten moet worden geïmporteerd in Sleutelhangertoegang; macOS vertrouwt deze rootbestanden niet vooraf zoals Windows dat wel doet. |
| Ondertekeningstool | Apple's ingebouwde codeontwerpfunctie (onderdeel van Xcode Command Line Tools) |
| Ondersteunde bestandstypen | .app, .dmg, .pkg, .ipa, .mpkg |
Apple-ondertekening
Apple-applicaties zijn een onmisbaar onderdeel van elk macOS. Als je deze applicaties ontwikkelt om ze in de iOS App Store te plaatsen, moet je ervoor zorgen dat deze bestanden correct zijn ondertekend. Het zelf instellen van Apple Signing kan een ingewikkeld proces zijn, maar met de Apple Signing CSP van CodeSign Secure is het eenvoudig om de vereisten op je Mac in te stellen en met Apple Signing te beginnen.
Configuratie voor Apple Signing
Het configureren van uw Mac voor onze Apple CSP is een zeer snel en eenvoudig proces. Een van de belangrijkste vereisten is dat u toegang moet hebben tot de webpagina van CodeSign Secure. Vanaf daar zijn het slechts een paar stappen om uw machine daadwerkelijk voor te bereiden op ondertekening. Laten we beginnen met de downloads van CodeSign Secure.
Voorwaarden: Zorg ervoor dat u een gebruikersnaam hebt en toegang tot de CodeSign Secure-webpagina.
Ga op de CodeSign Secure-webpagina naar de sectie 'Signing Tools' en download de EC Provider voor Mac.

Pak het bestand uit en verplaats het naar de map Programma's. Start hier de applicatie ECCssProvider.

Zorg ervoor dat je je CodeSign Secure URL, gebruikersnaam en code in de applicatie hebt ingevoerd en selecteer vervolgens vernieuwen.

De pagina zou nu de verschillende certificaten moeten weergeven waartoe u toegang hebt om te ondertekenen. Nu moeten we het P12-certificaat instellen voor toegang tot de server om te ondertekenen. Ga eerst naar de CodeSign Secure-webpagina en selecteer het gedeelte Instellingen. Selecteer vervolgens 'Gebruiker'. Selecteer ten slotte in het下拉菜单 aan de rechterkant 'Authenticatiecertificaat genereren'.

Voer de certificaatnaam, gebruikersnaam en vervaldatum van het P12-certificaat in en selecteer vervolgens de optie 'Genereer'. Er wordt een P12-certificaat gegenereerd en gedownload naar uw computer. Sla het wachtwoord van het certificaat en het certificaat zelf op.

Dubbelklik op het zojuist gedownloade P12-certificaat en open het met de toepassing 'Key Chain Access'. U wordt gevraagd om het beheerderswachtwoord en het certificaatwachtwoord in te voeren. Hiermee wordt het certificaat in uw systeem-sleutelhanger geplaatst.

Nadat u het authenticatiecertificaat in uw sleuteltoegangsketen hebt geplaatst, opent u de sleutel zelf. Ga naar Certificaten onder Systeem. Deze zou in de vervolgkeuzelijst van het authenticatiecertificaat moeten staan. Klik er met de rechtermuisknop op en selecteer 'Info ophalen'. Selecteer vervolgens 'Toegangscontrole' en sta toegang tot het certificaat toe met behulp van de ECCssProvider.app-applicatie. U moet uw computer waarschijnlijk opnieuw opstarten om te zien of de machtiging daadwerkelijk is gewijzigd.


Zorg er vervolgens voor dat u het volledige certificeringspad van het certificaat dat u gaat ondertekenen in uw Sleutelhangertoegang hebt. Mac-apparaten starten meestal niet met de bekende certificeringsketens zoals Windows-machines. Als u dus een OV/EV-certificaat gebruikt voor ondertekening, moet u die volledige certificeringsketen uploaden.

Nu moeten we de volgende opdracht uitvoeren: /Applications/ECCssProvider.app/Contents/macOS/ECCssProvider --batch --tlsclient <Auth Cert Name> . Met deze opdracht wordt het geüploade authenticatiecertificaat ingesteld als het TLS-authenticatiecertificaat bij het verbinden met de CodeSign Secure-server.

Onze volgende opdracht is security export-smartcard -i com.encryptionconsulting.ECCssProvider.CssToken:ECCSS . Deze opdracht toont alle certificaten die in de ECCssProvider GUI worden weergegeven, inclusief details over die certificaten. Het belangrijkste detail dat we nodig hebben, is de SHA1-hash van het certificaat. We gebruiken die hash om te bepalen met welk certificaat we ondertekenen. De certificaten staan in dezelfde volgorde als in de GUI.

Tot slot voeren we ons codesign-commando uit: codesign -f -s <Hash van het certificaat voor ondertekening> <Applicatie of bestand dat moet worden ondertekend> . De vlag -f dient om oude handtekeningen op bestanden te overschrijven, en de vlag -s geeft aan wat we ondertekenen. Vervolgens geven we de hash van het certificaat dat we gebruiken en het pad naar het te ondertekenen bestand op.
Verificatie
Controleer na het ondertekenen of de handtekening correct is geplaatst voordat u het bestand verspreidt. Voer het volgende commando uit:
codesign --verify --verbose
Een succesvolle ondertekening meldt "geldig op schijf" en "voldoet aan de aangewezen vereisten". Om te bevestigen dat het bestand ook op een andere machine de Gatekeeper-beoordeling doorstaat, voert u het volgende commando uit:
spctl --assess --verbose
Dit rapport geeft aan of Gatekeeper het bestand accepteert op basis van de digitale handtekening en, voor notarieel bekrachtigde apps, het notarisbewijs.
Veel voorkomende fouten
| Fout | waarschijnlijke oorzaak | Bepalen |
|---|---|---|
| Codesign meldt dat de identiteit niet vertrouwd is. | De volledige OV/EV-certificaatketen is niet geïmporteerd in Sleutelhangertoegang. | Importeer alle tussenliggende en rootcertificaten voor het ondertekeningscertificaat, niet alleen het bladcertificaat. |
| ECCssProvider staat niet vermeld als een toegestane toepassing voor de sleutel. | De toegangscontrole voor het geïmporteerde P12-certificaat is niet bijgewerkt om ECCssProvider.app toe te staan. | Controleer in Sleutelhangertoegang nogmaals de informatie over het certificaat via 'Info' > 'Toegangsbeheer' en herstart vervolgens de computer. |
| Er wordt een verkeerd certificaat gebruikt voor de ondertekening. | De certificaatvolgorde in de GUI komt niet overeen met de veronderstelde SHA-1-hash. | Voer de beveiligingsexport van de smartcard direct vóór het ondertekenen opnieuw uit om de huidige hash te bevestigen. |
CI/CD-gebruik en -opruiming
Voor herhaaldelijk ondertekenen op een buildmachine kunt u de ondertekenings- en verificatiesequentie samen scripten, zodat een build direct mislukt als de verificatie niet slaagt, in plaats van een niet-geverifieerd artefact te verzenden. Omdat de privésleutel in de HSM van CodeSign Secure blijft, hoeft er achteraf geen ondertekeningssleutel van de buildagent te worden verwijderd; de enige lokaal aanwezige referentie is het P12-authenticatiecertificaat dat wordt gebruikt om verbinding te maken met de server. Dit certificaat moet uit Keychain Access worden verwijderd als de buildagent wordt gedeeld of buiten gebruik wordt gesteld.
Veelgestelde Vragen / FAQ
Waarom vereist macOS het importeren van de volledige certificaatketen, terwijl Windows dat niet vereist?
Windows wordt standaard geleverd met veel gangbare openbare CA-root- en tussenliggende certificaten die al in de certificaatopslag zijn opgeslagen. De sleutelbos van macOS vertrouwt deze set niet voor codeondertekening, dus een OV/EV-certificaatketen die op Windows "gewoon werkt" vereist dat de tussenliggende certificaten handmatig in de sleutelbos van macOS worden geïmporteerd.
Bevestigt codesign –verify dat de app de Gatekeeper-procedure doorstaat?
Niet helemaal. codesign –verify bevestigt dat de handtekening zelf geldig en ongewijzigd is. spctl –assess controleert het bredere Gatekeeper-beleid, inclusief de notariële status, wat een aparte vereiste is voor apps die buiten de Mac App Store worden gedistribueerd.
Conclusie
Zoals u ziet, is de configuratie voor deze Apple-ondertekening zeer eenvoudig, vooral als u in het verleden al verschillende soorten ondertekening met CodeSign Secure hebt ingesteld . Onze Apple CSP kan elk type Apple-bestand ondertekenen, inclusief .app-, .dmg-, .pkg-, .ipa- en .mpkg-bestanden. Meer gedetailleerde documentatie vindt u in het documentatiegedeelte van de CodeSign Secure-website. Als u vragen hebt, een demo wilt zien of een proof-of-concept wilt starten, kunt u contact opnemen via [email protected] of www.encryptionconsulting.com.
