Partager via


Transparent Data Encryption et Certificats

Bonjour à tous,

 

J’aimerais aborder aujourd’hui une fonctionnalité de plus en plus utilisée pour SQL,
Transparent Data Encryption.

Et pour entrer dans le détail, je vais parler de la création des certificats utilisant des clés qui existent déjà dans votre
environnement.

Si vous avez déjà essayé  ça ,il a une grande chance que vous ayez rencontré le message d’erreur suivant quand
vous exécutez la commande CREATE CERTIFICATE

 “The certificate, asymmetric key, or private key file does not exist or has
invalid format.”

   En  regardant le message, il est nécessaire premièrement d’établir
quels sont les formats nécessaires :

  •  Le fichier .cer doit être en format DER binary comme spécifié dans l’article :

               « fichier encodé DER qui contient le certificat « 

                https://msdn.microsoft.com/fr-fr/library/ms187798.aspx

  •  La clé privée doit être en format .pvk

 

Informations concernant le format pour les deux fichiers :

https://msdn.microsoft.com/fr-fr/library/ms187798.aspx

« Un certificat est un sécurisable de niveau base de données qui suit la norme X.509 et prend en charge les champs

 X.509 V1. CREATE CERTIFICATE permet de charger un certificat à partir d'un fichier ou d'un assembly.

Cette instruction peut également générer une paire de clés et créer un certificat autosigné.

Les clés privées générées par SQL Server ont une longueur de 1 024 bits. Les clés privées importées à partir d'une
source externe ont une longueur minimale de 384 bits et une longueur maximale de 3 456 bits.

La longueur d'une clé privée importée doit être un entier multiple de 64 bits.

La clé privée doit correspondre à la clé publique spécifiée par certificate_name.

Lorsque vous créez un certificat à partir d'un conteneur, le chargement de la clé privée est facultatif. En revanche, lorsque
SQL Server génère un certificat autosigné, la clé privée est toujours créée. Par défaut, la clé privée est chiffrée au moyen de la clé principale de base de
données. Si la clé principale de base de données n'existe pas et qu'aucun mot de passe n'est spécifié, l'instruction échoue.

L'option ENCRYPTION BY PASSWORD n'est pas requise lorsque la clé privée est chiffrée au moyen de la clé principale de base de
données. Utilisez cette option seulement lorsque la clé privée doit être chiffrée à l'aide d'un mot de passe. Si aucun mot de passe n'est spécifié, la
clé privée du certificat sera chiffrée à l'aide de la clé principale de base de données. Ne pas spécifier cette clause entraînera une erreur, si la clé
principale de la base de données ne peut pas être ouverte.

 

Si vous n’avez pas des certificats générés directement en format DER et PVK ...  

  • Le fichier .cer

Pour convertir le fichier . cer  en format DER binary vous avez les options suivantes :

-utiliser l’outil Windows

 

- d’autres outils opensource (openssl par exemple )

 

 

  • La clé privé :

Microsoft n’a pas d’outils  pour extraire ou générer des PVK a partir des formats p12 ou pem. Nous avons des
outils pour générer  directement des certificats et PVK comme l’outil  makecert.

 https://msdn.microsoft.com/en-us/library/bfsktky3(v=vs.80).aspx

 

Une solution est d’extraire la clé privee en format .pem  à partir de p12 et après de la convertir 
en format .pvk

 

Pour extraire la clé privé en  format .pem :

 

Etape1 : Extraction clé privée (format PEM / RSA) avec passphrase = dnalor

 

openssl pkcs12 -in TDE.p12 -out msft_withpassphrase.pem

 

Etape 1 bis : Extraction clé privée (format PEM / RSA) sans passphrase

 openssl rsa -in msft_withpassphrase.pem -out msft_withoutpassphrase.pem

Enter pass phrase for msft_withpassphrase.pem:

writing RSA key

 

Etape 2: Vérification contenu clé privée (format PEM / RSA)

 

openssl rsa  -in msft_withpassphrase.pem -check

 

Etape 3 : Conversion

Pour convertir la clé privée en format pvk  j’ai touché  une outil  third party qui s’appelle
 pvktool (https://www.drh-consultancy.demon.co.uk/pvk.html)

 

 

Alexandra Ciortea