Intégration de la signature de code dans le cloud avec les actions GitHub

Cet article du guide montre comment eSigner est intégré à GitHub Actions pour la signature automatisée du code dans une configuration d'intégration continue/livraison continue (CI/CD).

eSigner est notre plateforme de signature basée sur le cloud à laquelle les développeurs de logiciels du monde entier font confiance pour effectuer la signature de code d'entreprise sans avoir besoin de jetons USB ou d'autre matériel spécialisé.  L'un des composants d'eSigner est CodeSignTool : un utilitaire de ligne de commande axé sur la confidentialité qui est très efficace pour les développeurs qui souhaitent automatiser la signature de code.  Les sections suivantes montrent comment vous pouvez signer un code Java (Maven) sur GitHub Actions à l'aide d'eSigner CodeSignTool.

SSL.com EV Signature du code Les certificats aident à protéger votre code contre les falsifications non autorisées et les compromis avec le plus haut niveau de validation, et sont disponibles pour aussi peu que 249 $ par année. Vous pouvez également utilisez votre certificat EV Code Signing à grande échelle dans le cloud avec eSigner.

COMMANDER MAINTENANT

Utilisation

- Nom: Signer un artefact avec CodeSignTool

  utilisations: sslcom/actions-codedesigner@develop

  avec:

  •      Commandes CodeSignTool :

     - get_credential_ids: affiche la liste des identifiants d'identification eSigner associés à un utilisateur.

     - credential_info : informations de clé et de certificat de sortie liées à un identifiant d'identification.

     - sign: Objet de code de signe et d'horodatage.

     - batch_sign: Signez et horodatez plusieurs objets de code avec un seul OTP.

     - hash: hachage(s) pré-calculé(s) pour une utilisation ultérieure avec la commande batch_hash_sign.

     - batch_sign_hash: Hachage(s) de signe pré-calculé avec la commande hash.

        commander: signer

 

  • Nom d'utilisateur du compte SSL.com.

         username: ${{secrets.ES_USERNAME}}

  •  Mot de passe du compte SSL.com.

         password: ${{secrets.ES_PASSWORD}}

  • ID d'identification pour la signature du certificat.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • Chemin de l'objet de code à signer.

          file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar

  • Répertoire où le ou les objets de code signés seront écrits.

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

Contributions

  • Nom d'utilisateur: nom d'utilisateur du compte SSL.com. (Obligatoire)
  • Mot de passe: Mot de passe du compte SSL.com (Requis)
  • identifiant_identifiant: ID d'identification pour la signature du certificat. Si credential_id est omis et que l'utilisateur n'a qu'un seul certificat de signature de code eSigner, CodeSignTool utilisera celui-ci par défaut. Si l'utilisateur possède plusieurs certificats de signature de code, ce paramètre est obligatoire. (Obligatoire)
  • totp_secret: Secret OAuth TOTP. Vous pouvez accéder à des informations détaillées sur https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Obligatoire)
  • chemin du fichier: Chemin de l'objet code à signer. (Obligatoire)
  • chemin_sortie: Répertoire où le ou les objets de code signés seront écrits. Si output_path est omis, le fichier spécifié dans -file_path sera remplacé par le fichier signé.

Exemple de flux de travail de signature de code Java (Maven) JAR

Préparer les composants du workflow

  1. Créez un dossier Github sur votre éditeur. Incluez les flux de travail avec le dossier et créez un fichier yml sous le dossier.
    1. Nommez votre projet et le type de flux de travail impliqué
    Nom : Maven Build and Sign
     
    1. Déclencher ce workflow sur un push
    activé : appuyez sur
     
    1. Créer une variable d'environnement
    • Les variables d'environnement sont utilisées pour rendre les échantillons plus lisibles. Dans la capture d'écran ci-dessus de l'exemple de workflow, PROJECT_NAME, PROJECT_VERSION et MAVEN_VERSION ont éventuellement été omis. La signature peut toujours se poursuivre même avec ces omissions.
    env : PROJECT_NAME : HelloWorld PROJECT_VERSION : 0.0.1 MAVEN_VERSION : 3.8.5 JAVA_VERSION : 17
     
    1. Définir les jobs sur votre éditeur
    jobs : build-and-sign-jar :
     
    1. Exécuter le travail sur Ubuntu Runner
        s'exécute sur : ubuntu-latest
     
    1. Créez un nom. Lorsque le workflow s'exécute, c'est le nom qui est consigné.
      nom : CodeSigner sur Java avec Maven
     

Décrire les étapes d'extraction du code source, de configuration de l'environnement Java et Maven et de création d'Artifact Directory.

  1) Extrayez le code source afin que le workflow puisse y accéder.

   étapes : - utilisations : actions/checkout@v2
 

  2) Configurez l'environnement Java et Maven pour le flux de travail à utiliser.

    - nom : Installer Maven et Java utilise : s4u/setup-maven-action@v1.3.1 avec : version java : '${{env.JAVA_VERSION}}' version maven : '${{env.MAVEN_VERSION}}'

 

      3) Créer un répertoire d'artefacts pour stocker les fichiers d'artefacts signés et non signés

 - nom : Shell de création de répertoire : bash run : | mkdir ${GITHUB_WORKSPACE}/artefacts mkdir ${GITHUB_WORKSPACE}/packages

 

      4) Construisez un projet ou une solution maven et toutes ses dépendances.

      Une fois le fichier jar créé, copiez-le dans le dossier 'packages' pour le signer

  • Dans cet exemple de workflow de signature écrite, plusieurs types de projets ont été créés. C'est pourquoi les fichiers des différents types de projets ont été conservés en créant des sous-dossiers. Un sous-dossier nommé 'java' a été créé pour les projets Java. Dans la capture d'écran de démonstration ci-dessus, il n'était pas nécessaire de créer un sous-dossier nommé "java", il n'a donc pas été inclus dans le script.
 - nom : Build Java Project shell : bash run : | mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. pot
 

Décrire les étapes des tâches de signature et de téléchargement

  1. La tâche de signature est l'étape où les fichiers JAR (artefacts) créés seront signés avec CodeSignTool.
 - nom : Sign Artifact utilise : sslcom/actions-codedesigner@develop avec :

           Objet de code de signe et d'horodatage.

commande : signe

           Nom d'utilisateur du compte SSL.com.

nom d'utilisateur : ${{secrets.ES_USERNAME}}

           Mot de passe du compte SSL.com.

mot de passe : ${{secrets.ES_PASSWORD}}

           ID d'identification pour la signature du certificat.

identifiant_identifiant : ${{secrets.CREDENTIAL_ID}}

           Secret OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret : ${{secrets.ES_TOTP_SECRET}}

           Chemin de l'objet de code à signer. (fichiers DLL, JAR, EXE, MSI vb… )

  chemin_fichier : ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           Répertoire où le ou les objets de code signés seront écrits.

chemin_sortie : ${GITHUB_WORKSPACE}/artefacts

 

  1. La tâche de téléchargement est l'étape où les artefacts de votre flux de travail seront téléchargés, ce qui vous permet de partager des données entre les tâches et de stocker des données une fois qu'un flux de travail est terminé.
 - nom : Télécharger les fichiers signés utilise : actions/upload-artifact@v2 avec : nom : ${{env.PROJECT_NAME}}.jar chemin : ./artifacts/${{env.PROJECT_NAME}}.jar
 

Obtenez un téléchargeur d'artefacts de build à partir de Github Marketplace

Passez en revue votre script de codage

Dans l'ensemble, le script de codage pour les tâches de construction, de signature et de téléchargement doit ressembler à l'image ci-dessous. Assurez-vous de corriger toutes les erreurs telles que les fautes d'orthographe ou les sauts de ligne erronés dans le script afin que le processus de signature se déroule sans heurts.

SSL.com EV Signature du code Les certificats aident à protéger votre code contre les falsifications non autorisées et les compromis avec le plus haut niveau de validation, et sont disponibles pour aussi peu que 249 $ par année. Vous pouvez également utilisez votre certificat EV Code Signing à grande échelle dans le cloud avec eSigner.

COMMANDER MAINTENANT

Définissez vos variables d'environnement

Accédez à l'emplacement de votre projet sur votre compte Github. Clique le Actions languette. Clique le Nouveau secret de dépôt pour placer les valeurs de chaque variable d'environnement requise lors de la signature de votre code.

Créer un nouveau référentiel sur la ligne de commande

Rendez-vous à l'emplacement de votre projet sur Github et copiez chaque composant de la commande push.

Pousser le projet

Incluez chaque ligne de commande push dans votre éditeur de code. Une fois terminé, le code sera automatiquement poussé sur Github.

Attendez que l'artefact soit signé avec eSigner CodeSignTool

Télécharger le fichier signé

Cliquez sur le fichier signé pour le télécharger.

Remarque : Assurez-vous de corriger les erreurs typographiques ou les sauts de ligne erronés dans le script afin que le processus de signature se déroule sans heurts.

Exemple de pipeline d'actions Github


Découvrez l'exemple de pipeline Github Actions que nous avons créé sur github.com/SSLcom/codedesigner-github-sample  

Autres guides d'intégration de la signature à distance CI/CD

Besoin de solutions personnalisées ? 

Grâce à nos connaissances spécialisées et à notre personnel d'assistance cinq étoiles, nous sommes prêts et disposés à travailler avec vous sur des solutions personnalisées ou des remises de signature de gros volumes au niveau de l'entreprise. Remplissez le formulaire ci-dessous et nous vous contacterons.

Abonnez-vous à la newsletter de SSL.com

Ne manquez pas les nouveaux articles et mises à jour de SSL.com

Restez informé et en sécurité

SSL.com est un leader mondial de la cybersécurité, PKI et les certificats numériques. Inscrivez-vous pour recevoir les dernières nouvelles de l'industrie, des conseils et des annonces de produits de SSL.com.

Nous aimerions recevoir vos commentaires

Répondez à notre enquête et faites-nous part de votre avis sur votre récent achat.