Signer le code avec Azure Key Vault
Un certificat Code Signing et sa clé privée doivent être stockés sur un matériel ou dans un cloud certifié. Vous pouvez importer votre certificat dans Key Vault, un processus sécurisé et conforme aux normes. Cet article décrit la configuration du compte Azure ainsi que le processus de signature.
Stockage sécurisé du certificat Code Signing
Les certificats Code Signing sont émis et stockés exclusivement sur des modules sécurisés, HSM. Un cloud HSM est bien moins couteux qu'un module matériel HSM. Azure Key Vault répond aux exigences du secteur en matière de sécurité des paires de clés de signature de code FIPS 140-2 level 3 et CC EAL4+ et nous allons vous démontrer aujourd'hui comment l'utiliser en pratique. Plus d’informations sur le service, consultez Azure Key Vault.
Création et configuration du compte Azure Key Vault
Le cloud Azure est une alternative au KeyLocker cloud HSM. Les clients qui utilisent les services cloud Azure peuvent profiter du stockage de clés sécurisé (Cloud HSM) et stocker leur certificat Code Signing dans Key Vault.
Avant de signer dans Azure, vous devez :
- Importer le certificat dans Azure Key Vault (créer une demande CSR, importer la réponse)
- Créer une application que vous appellerez pour signature
- Ajouter l'application dans Access policies de votre Key Vault
- Installer le logiciel d'assistance
Regardons maintenant étape par étape. Le processus est expliqué brièvement pour les utilisateurs avancés, si vous avez besoin d'un guide détaillé, utilisez le tutoriel sur GitHub. Ignorez l'achat du certificat et la validation, tout ça est réalisé via la commande de SSLmarket.
Obtention du certificat Code Signing et configuration Azure
Remplissez le formulaire de commande pour le certificat Code Signing (Signature de code ou Signature de code EV). Choisissez le stockage de votre certificat Code signing, sélectionnez HSM. Créez une demande CSR dans Azure et saisissez-la dans l'espace client de SSlmarket. DigiCert effectuera une vérification rapide du demandeur et émettra le certificat (que vous importerez dans Azure).
Ouvrez le portail Azure Key Vault - menu de gauche - Certificates - Create a certificate. Sélectionnez le nom du certificat et le Common Name (le signataire), le type de l'Autorité de certification : Certificate issued by non-integrated CA, le Content type (format) : PEM.
Cliquez sur Advanced Policy Configuration, sélectionnez Not configured et définissez les options suivantes :
- Extended Key Usages (EKU) : 1.3.6.1.5.5.7.3.3
- Key Type RSA, Key Size 3072b, EC P-256
- Clé privée Not exportable, s'il s'agit du certificat Code Signing EV
Retrouvez votre certificat dans la liste des certificats In progress, failed or cancelled et cliquez dessus. Sélectionnez Certificate Operation et ensuite Download CSR. Une fois le certificat délivré, vous allez l'importer au même endroit, en utilisant la fonction Merge Signed Request.
Utilisez la demande CSR dans votre commande de certificat sur SSLmarket. La demande CSR peut être utilisée pour obtenir un Code Signing OV/EV stocké sur un HSM.
Créez l'application
Créez l'application dans Microsoft Entra ID (anciennement Microsoft Azure Active Directory) et obtenez sa clé (secret) ; celles-ci seront utilisées pour l’authentification et l'accès à Key Vault.
Ouvrez le portail Azure Microsoft Entra ID - menu de gauche - App registrations- New registration, créez un nom et sélectionnez Accounts in this organizational directory only (Default Directory only - Single tenant). Copiez l'ID de l'application Application ID - et sauvegardez-le, vous en aurez besoin plus tard (comme “client ID”).
Ouvrez l'application - cliquez sur Certificates & secrets. Créez un nouveau Client secret (donnez-lui un nom). Copiez et enregistrez la valeur (Secret), vous devez copier la valeur et le sauvegarder, car elle ne pourra plus être récupérée ultérieurement.
Configurer Access policies
Retournez au Key Vault - Access policy.
Configurez Permission model → Vault access policy.
Dans le menu de gauche, sélectionnez Access Policies et cliquez sur Create. Créez Access policy qui s'appliquera à l'application que vous avez créée. Attention aux autorisations requises:
- Key permissions - Verify, Sign, Get, List
- Secret permissions - Get, List
- Certificate permissions - Get, List
Dans la deuxième étape, sélectionnez l'application - vous la trouverez par son nom.
Vous avez terminé la configuration d'Azure.
Installer le logiciel d'assistance
Installez les modules suivants sur votre ordinateur :
- .net SDK 6.0.200, Windows x64; download
- .net ASP.NET Core Runtime 6.0.2, Windows x64; download
- Azure SignTool, installez à l'aide de cmd : dotnet tool install --global AzureSignTool
Félicitation, vous pouvez maintenant utiliser Azure SignTool pour signer le code avec votre certificat stocké dans Key Vault.
Signer le code dans Azure Key Vault
Maintenant tout est prêt et vous pouvez signer votre package à l’aide de la commande AzureSignTool. Voici un exemple de commande :
azuresigntool sign -kvt KEY-VAULT-DIRECTORY-ID -kvu KEY-VAULT-URI -kvi APPLICATION-CLIENT-ID -kvc CERTIFICATE-NAME -kvs CLIENT-SECRET -tr http://timestamp.digicert.com -v PATH-TO-EXECUTABLE
La commande requiert les paramètres suivants :
- Kvt : directory id de votre Azure Key Vault est l’URL de votre Azure Key Vault.
- kvu : l’URL de votre Azure Key Vault. Celle-ci figure dans la page principale du service, dans le portail Azure, sous DNS Name.
- kvi : application id l’ID de l’application Azure que vous avez inscrite précédemment.
- kvc : friendly name est le nom convivial du certificat que vous souhaitez utiliser. Vous l'avez choisi dans l'étape précédente.
- kvs : client secret est la clé secrète client que vous avez générée pour l'application.
- tr : l’URL d’un serveur d’horodatage. Utilisez cette option pour que la signature reste fiable également après l’expiration du certificat.
- v : le chemin d'accès du fichier que vous signez.
Toutes les données sont dans l'interface Azure.
Nous sommes désolés que vous n'ayez pas trouvé les informations que vous recherchiez.
Aidez-nous à améliorer cet article. Vous cherchez autre chose ? N'hésitez pas à nous écrire.