Aug 26 2011

Signer une macro Excel avec un certificat issu de votre PKI

Cet article décrit comment signer un projet VBA sous Excel avec un certificat issu de votre PKI ADCS. Cette méthode peut s’appliquer pour n’importe quel projet VBA de la suite Office. Vous pouvez lire cette KB et cet article MSDN pour une introduction sur comment signer des projets VBA.

Nous pouvons lire dans les deux articles mentionnés précédemment que le modèle de type “code signing” est utilisé pour signer des macros. Nous allons donc créer un nouveau modèle de certificat nommé “Excel” à partir du modèle “code signing“. Ce modèle aura les caractéristiques suivantes:

  • L’autoenrollment est configuré pour le groupe ldap389-excel-dev, ce groupe contient les utilisateurs autorisés à signer des projets VBA, à savoir vos dévelopeurs, dans notre exemple il contient l’utilisateur ldap389-dev.
  • Clef privée: 2048 bits non exportable.
  • Validité du certificat: 1 an.

Une fois le modèle de certificats “Excel” configuré, le certificat sera automatiquement installé par autoenrollment dans le magasin de certificats de notre utilisateur ldap389-dev faisant partie du groupe ldap389-excel-dev:

Il est conseillé de verrouiller par mot de passe son projet VBA avant de le signer, sous l’éditeur Visual Basic: click droit sur le projet, selectionner “propriétés” puis onglet “protection”. Pour signer son projet VBA: séléctionner son projet puis faire “outils\signature éléctronique”, cliquer sur “choisir”, le certificat présent dans son magasin local lui est alors proposé.

Le projet est maintenant protégé et signé pour la période de validité du certificat que vous avez configuré dans votre modèle, dans notre cas pour le modèle “Excel” 1 an. Il faudra ressigner la macro et la redéployer avant l’expiration du certificat (dans notre cas le 16/08/2012).

A moins que vous n’utilisez un serveur de TimeStamp conformément à la RFC 3161, ceci afin de dater la macro lors de sa signature. Le développeur devra éditer la clef HKEY_CURRENT_USER\Software\Microsoft\VBA\Security comme est indiqué dans le chapitre “Office files: enable time-stamping” de ce post. L’édition de cette clef peut être déployée via GPO pour le groupe  ldap389-excel-dev. Dans notre cas nous utiliserons les valeurs de registre suivantes:

  • TimeStampURL (REG_SZ): http://timestamp.verisign.com/scripts/timstamp.dll.
  • TimeStampRetryCount (REG_DWORD): 2.
  • TimeStampRetryDelay (REG_DWORD): 2.

Une fois que vous avez signé les différents projets VBA qui ne l’étaient pas vous pouvez forcer le niveau de sécurité de Excel via GPO pour toutes les versions déployées dans votre entreprise, pour cela il vous faut utiliser les “Administrative Templates” de chaque version de Office:

Vous pouvez créer une GPO qui empêche l’exécution des macros non signées pour toutes le versions de Excel des suites Office mentionnées ci dessus:

Les paramètres ci dessus sont les paramètres par défaut de Excel, mais il est toujours mieux de les forcer par GPO, au cas où ils seraient modifiés..

This post is also available in: Anglais

No Comments

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

*

WordPress Themes

Blossom Icon Set

Software Top Blogs