Mode FIPS

Télécharger le pilote JDBC

Le pilote Microsoft JDBC pour SQL Server prend en charge l’exécution dans des JVM configurées pour être compatibles FIPS 140.

Prérequis

  • Machine virtuelle Java configurée selon FIPS
  • Mettre à jour le certificat TLS/SSL
  • Fichiers de stratégie appropriés
  • Paramètres de configuration appropriés

Machine virtuelle Java configurée selon FIPS

En règle générale, les applications peuvent configurer le fichier java.security pour utiliser des fournisseurs de chiffrement compatibles FIPS. Pour savoir comment configurer la conformité FIPS 140, consultez la documentation spécifique à votre machine virtuelle Java.

Pour voir les modules approuvés pour la configuration FIPS, reportez-vous à Modules validés dans le programme de validation des modules de chiffrement.

Les fournisseurs peuvent avoir à effectuer des étapes supplémentaires pour configurer une machine virtuelle Java en mode FIPS.

Certificat TLS approprié

Pour vous connecter à SQL Server en mode FIPS, vous devez disposer d’un certificat TLS/SSL valide. Installez-le ou importez-le dans le magasin de clés Java sur l’ordinateur client (JVM) où FIPS est activé.

Importation du certificat TLS dans le magasin de clés Java

Pour FIPS, vous devrez très probablement importer le certificat (.cert) dans PKCS ou dans un format spécifique au fournisseur. Utilisez l’extrait de code suivant pour importer le certificat TLS/SSL et le stocker dans un répertoire de travail au format de magasin de clés approprié. TRUST_STORE_PASSWORD est votre mot de passe pour le magasin de clés Java.

public void saveGenericKeyStore(
        String provider,
        String trustStoreType,
        String certName,
        String certPath
        ) throws KeyStoreException, CertificateException,
            NoSuchAlgorithmException, NoSuchProviderException,
            IOException
{
    KeyStore ks = KeyStore.getInstance(trustStoreType, provider);
    FileOutputStream os = new FileOutputStream("./MyTrustStore_" + trustStoreType);
    ks.load(null, null);
    ks.setCertificateEntry(certName, getCertificate(certPath));
    ks.store(os, TRUST_STORE_PASSWORD.toCharArray());
    os.flush();
    os.close();
}

private Certificate getCertificate(String pathName)
        throws FileNotFoundException, CertificateException
{
    FileInputStream fis = new FileInputStream(pathName);
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    return cf.generateCertificate(fis);
}

L’exemple suivant montre l’importation d’un certificat Azure TLS/SSL au format PKCS12 avec le fournisseur BouncyCastle. Le certificat est importé dans le répertoire de travail nommé MyTrustStore_PKCS12 à l’aide de l’extrait de code suivant :

saveGenericKeyStore(BCFIPS, PKCS12, "SQLAzure SSL Certificate Name", "SQLAzure.cer");

Fichiers de stratégie appropriés

Pour certains fournisseurs FIPS, des fichiers JAR de stratégie illimités sont nécessaires. Dans de tels cas, pour Sun/Oracle, téléchargez les fichiers de stratégie de compétence de force illimitée d’extension de chiffrement Java (JCE) pour JRE 8 ou JRE 7.

Paramètres de configuration appropriés

Pour exécuter le pilote JDBC en mode compatible FIPS, configurez les propriétés de connexion comme indiqué dans le tableau suivant.

Propriétés

Propriété Type Par défaut Description Notes
encrypt Chaîne ["true / false / strict"] "true" Pour le chiffrement de la machine virtuelle Java activée pour FIPS, la propriété doit être true La valeur par défaut est passée de false à true dans la version 10.2. Dans la version 11.2.0, le type est passé de booléen à String et l’option stricte a été ajoutée pour permettre la prise en charge de TDS 8.0.
TrustServerCertificate Booléen [« true / false »] "false" Pour FIPS, l’utilisateur doit valider la chaîne de certificats, de sorte que l’utilisateur doit utiliser la valeur de false pour cette propriété.
trustStore String null Chemin du fichier de magasins de clés Java où vous avez importé votre certificat. Si vous installez le certificat sur votre système, vous n’avez rien à faire. Le pilote utilise des fichiers cacerts ou jssecacerts.
trustStorePassword String null Mot de passe utilisé pour vérifier l'intégrité des données trustStore.
fips Booléen [« true / false »] "false" Pour la machine virtuelle Java activée pour FIPS, la propriété doit être true Ajouté au point 6.1.4 (version 6.2.2 stable)
fipsProvider String null Fournisseur FIPS configuré dans la machine virtuelle Java. Par exemple, BCFIPS ou SunPKCS11-NSS Ajouté au point 6.1.2 (version 6.2.2 stable), déconseillé dans 6.4.0 : consultez les détails ici.
trustStoreType String JKS Pour le mode FIPS, définissez le type de magasin de confiance PKCS12 ou le type défini par le fournisseur FIPS Ajouté au point 6.1.2 (version 6.2.2 stable)