Import d’un certificat d’autorité dans le service de certificats Microsoft

! Attention, cet article peut paraître totalement aberrant aux lecteurs connaissant les HSM !

Si vous avez généré votre biclé sur un système tiers plutôt que sur le serveur d’autorité Microsoft, il va falloir l’importer lors de l’installation ou du renouvellement…
Si certains messages d’erreurs lors de cet import peuvent être explicites, d’autres sont plus déconcertants :
import_p12
Le certificat sélectionné n’a pas pu être utilisé

Ou lors de l’import dans la console de certificats :
import_re_p12
ASN1 fin de données inattendue. 0x80093102 (ASN: 258)

Pourtant ce certificat peut très bien être utilisé par l’autorité…
Malgré ce Windows trop sur de lui, ce n’est pas le certificat qui ne peut être utilisé, mais le conteneur PKCS#12 qui ne contient pas les données attendues par le service…

Voici les attributs de clé contenu dans notre « P12 », précédemment généré par OpenSSL, xca ou autres logiciels cryptographique digne de ce nom :

Offset| Len  |LenByte|
======+======+=======+======================================================================
  4195|    62|      1| SET : 
  4197|    23|      1|    SEQUENCE : 
  4199|     9|      1|       OBJECT IDENTIFIER : friendlyName [1.2.840.113549.1.9.20]
  4210|    10|      1|       SET : 
  4212|     8|      1|          BMP STRING : 'acms'
  4222|    35|      1|    SEQUENCE : 
  4224|     9|      1|       OBJECT IDENTIFIER : localKeyID [1.2.840.113549.1.9.21]
  4235|    22|      1|       SET : 
  4237|    20|      1|          OCTET STRING : 
      |      |       |             9A499BFB3E6AACE88638381E253C15190BC16FDD

ou via OpenSSL :

Bag Attributes
    friendlyName: acms
    localKeyID: 9A 49 9B FB 3E 6A AC E8 86 38 38 1E 25 3C 15 19 0B C1 6F DD 
Key Attributes: <No Attributes>

Pour n’importe quel autre logiciel cryptographique, cela suffirait amplement…. mais non, Microsoft semble rester sur sa faim avec ce P12…
Reconstruisons un autre avec le même certificat, la même clé, mais avec d’autres attributs :

  • Local Machine Keyset (-LMK)
  • Cryptographic Service Providers (-CSP x)
  • Friendly Name (-name)

Le fichier .p12 est conservé, un nouveau .pfx est créé.

openssl pkcs12 -password pass:XXXX -in acms.p12 -out acms.pem -clcerts -nodes
openssl pkcs12 -in acms.pem -password pass:XXXX -out acms.pfx -name "ac ms" -CSP "Microsoft Software Key Storage Provider" -LMK -export

Remarques :

  • ne pas oublier de supprimer minutieusement le fichier acms.pem
  • Le fournisseur « Microsoft Software Key Storage Provider » n’est disponible que sous NT 6, il doit malheureusement être remplacé par « Microsoft Enhanced RSA and AES Cryptographic Provider » avant

Voici les nouveaux attributs de clé :

Offset| Len  |LenByte|
======+======+=======+======================================================================
  4195|   174|      2| SET : 
  4198|    13|      1|    SEQUENCE : 
  4200|     9|      1|       OBJECT IDENTIFIER :  [1.3.6.1.4.1.311.17.2]
  4211|     0|      1|       SET : ''
  4213|    25|      1|    SEQUENCE : 
  4215|     9|      1|       OBJECT IDENTIFIER : friendlyName [1.2.840.113549.1.9.20]
  4226|    12|      1|       SET : 
  4228|    10|      1|          BMP STRING : 'ac ms'
  4240|    35|      1|    SEQUENCE : 
  4242|     9|      1|       OBJECT IDENTIFIER : localKeyID [1.2.840.113549.1.9.21]
  4253|    22|      1|       SET : 
  4255|    20|      1|          OCTET STRING : 
      |      |       |             9A499BFB3E6AACE88638381E253C15190BC16FDD
  4277|    93|      1|    SEQUENCE : 
  4279|     9|      1|       OBJECT IDENTIFIER : szOID_LOCAL_MACHINE_KEYSET [1.3.6.1.4.1.311.17.1]
  4290|    80|      1|       SET : 
  4292|    78|      1|          BMP STRING : 
      |      |       |             'Microsoft Software Key Storage Provider'

ou via OpenSSL :

Bag Attributes
    Microsoft Local Key set: <No Values>
    friendlyName: ac ms
    localKeyID: 9A 49 9B FB 3E 6A AC E8 86 38 38 1E 25 3C 15 19 0B C1 6F DD 
    Microsoft CSP Name: Microsoft Software Key Storage Provider
Key Attributes: <No Attributes>

Cette fois, le PFX est correctement importé et utilisable. Le cas échéant, il faudra aller supprimer l’ancien certificat déjà importé.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.