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