Signer le code avec Azure Key Vault

Un certificat Code Signing et la clé privée doivent être stockés sur un matériel ou un cloud certifié. Vous pouvez importer votre certificat dans Key Vault, le processus est sécurisé et conforme à la norme. Cet article décrit la configuration du compte Azure et le processus de signature.

Stockage sécurisé du certificat Code Signing

Les certificats Code Signing sont émis et stockés exclusivement sur les 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 Azure Key Vault ici.

Créer et configurer le compte Azure Key Vault

Azure cloud est une alternative au KeyLocker cloud HSM. Les clients qui utilisent les services cloud Azure peuvent profiter du stockage de clé sécurisé (Cloud HSM) et stocker son certificat Code Signing dans Key Vault.

Avant de signer dans Azure, vous devez :

  1. Importer le certificat dans Azure Key Vault (créer une demande CSR, importer la réponse)
  2. Créer une application que vous appellerez pour signature
  3. Ajouter l'application dans Access policies de votre Key Vault
  4. 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.

Obtenir le certificat Code Signing et configurer 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 émet le certificat (vous allez l'importer dans Azure).

Ouvrez le Portail Azure Key Vault - menu de gauche - Certificates - Create a certificate. Sélectionnez le nom du certificat et Common Name (le signataire), type de l'Autorité de certification : Certificate issued by non-integrated CA, Content type (format) : PEM.

Créer une demande CSR dans Azure
Créer une demande CSR dans Azure

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
Advanced policy configuration
Advanced policy configuration

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.

Stažení CSR v Certificate Operation
Télécharger la demande CSR et Importation du certificat

Utilisez la demande CSR dans votre commande de certificat de SSLmarket. La demande CSR peut être utilisée pour un Code Signing OV et EV stocké sur un HSM.

Créez l'application

Créez l'application dans Microsoft Entra ID (renommé Azure Active Directory Application) et sa valeur (secret) ; elles seront utilisées pour l’authentification et l'accès à Key Vault.

Ouvrez Azure Portail Microsoft Entra ID - menu 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, vous allez l'utiliser plus tard (comme “client ID”).

Ouvrez l'application - cliquez sur Certificates & secrets. Créez un nouveau Client secret (créez un nom). Copiez et enregistrez la valeur (Secret), vous devez copier la valeur et le sauvegarder, il ne sera plus possible de la récupérer.

Configurer Access policies

Retournez au Key Vault - Access policy.

Configurez Permission model → Vault access policy.

Azure Permission model
Azure Permission model

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.

Azure - Create Acess Policy
Azure - Create Acess Policy

Vous avez terminé la configuration d'Azure.

Installer le logiciel d'assistance

Installez les modules suivants dans 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.

Cet article vous a-t-il été utile ?