Modalità FIPS

Scaricare il driver JDBC

Microsoft JDBC Driver per SQL Server supporta l'esecuzione in JVM (Java Virtual Machine) configurate per essere conformi a FIPS 140.

Prerequisiti

  • JVM configurata per FIPS
  • Certificato TLS/SSL appropriato
  • File di criteri appropriati
  • Parametri di configurazione appropriati

JVM configurata per FIPS

Le applicazioni possono in genere configurare il file java.security per l'uso di provider di crittografia conformi a FIPS. Per informazioni sulla configurazione della conformità FIPS 140, vedere la documentazione specifica della JVM.

Per informazioni sui moduli approvati per la configurazione FIPS, vedere Moduli convalidati nel Programma di convalida moduli di crittografia.

I fornitori possono prevedere passaggi aggiuntivi per configurare una JVM con FIPS.

Certificato TLS appropriato

Per connettersi a SQL Server in modalità FIPS, è necessario un certificato TLS/SSL valido. Installarlo o importarlo nell'archivio chiavi Java nel computer client (JVM) in cui è abilitato FIPS.

Importazione del certificato TLS nell'archivio chiavi Java

Per FIPS, è molto probabile che sia necessario importare il certificato (con estensione cert) in formato PKCS o in un formato specifico del provider. Usare il frammento di codice seguente per importare il certificato TLS/SSL e archiviarlo in una directory di lavoro con il formato di archivio chiavi appropriato. TRUST_STORE_PASSWORD è la password per l'archivio chiavi 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);
}

Nell'esempio seguente viene importato un certificato TLS/SSL di Azure in formato PKCS12 con il provider BouncyCastle. Il certificato viene importato nella directory di lavoro denominata MyTrustStore_PKCS12 usando il frammento di codice seguente:

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

File di criteri appropriati

Per alcuni provider FIPS sono necessari JAR di criteri senza restrizioni. In questi casi, per Sun/Oracle, scaricare Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files per JRE 8 o JRE 7.

Parametri di configurazione appropriati

Per eseguire JDBC Driver in modalità conforme a FIPS, configurare le proprietà di connessione come indicato nella tabella riportata di seguito.

Proprietà

Proprietà Type Default Descrizione Note
encrypt Stringa ["true/ false/ strict"] "true" Per la JVM abilitata per FIPS, la proprietà encrypt deve essere true Il valore predefinito è stato modificato da false a true nella versione 10.2. Nella versione 11.2.0 il tipo è cambiato da booleano a String e l'opzione strict è stata aggiunta per consentire il supporto TDS 8.0.
TrustServerCertificate booleano ["true/false"] "false" Per FIPS, l'utente deve convalidare la catena di certificati. Pertanto l'utente deve usare il valore "false" per questa proprietà.
trustStore String Null Il percorso del file dell'archivio chiavi Java in cui è stato importato il certificato. Se il certificato viene installato nel sistema, non è necessario passare alcun elemento. Il driver usa i file cacerts o jssecacerts.
trustStorePassword String Null Password utilizzata per verificare l'integrità dei dati del file trustStore.
fips booleano ["true/false"] "false" Per la JVM abilitata per FIPS, questa proprietà deve essere true. Aggiunta nella versione 6.1.4 (versione stabile 6.2.2)
fipsProvider String Null Provider FIPS configurato nella JVM. Ad esempio, BCFIPS o SunPKCS11-NSS Aggiunta nella versione 6.1.2 (versione stabile 6.2.2), deprecata nella versione 6.4.0. Vedere i dettagli qui.
trustStoreType String JKS Per la modalità FIPS impostare il tipo di archivio attendibilità su PKCS12 o sul tipo definito dal provider FIPS Aggiunta nella versione 6.1.2 (versione stabile 6.2.2)