Teilen über


FIPS-Modus

JDBC-Treiber herunterladen

Der Microsoft-JDBC-Treiber für SQL Server unterstützt die Ausführung in JVMs, die als FIPS 140-konform konfiguriert sind.

Voraussetzungen

  • Für FIPS konfigurierte JVM
  • Geeignetes TSL/SSL-Zertifikat
  • Geeignete Richtliniendateien
  • Geeignete Konfigurationsparameter

Für FIPS konfigurierte JVM

Im Allgemeinen können Anwendungen die Datei java.security für die Verwendung von FIPS-konformen Kryptografieanbietern konfigurieren. Informationen zum Konfigurieren für FIPS 140-Konformität finden Sie in der Dokumentation zu Ihrer JVM.

Die genehmigten Module für die FIPS-Konfiguration finden Sie unter Validated Modules in the Cryptographic Module Validation Program (Validierte Module im Programm zur Validierung von Kryptografiemodulen).

Anbieter haben möglicherweise weitere Schritte zum Konfigurieren einer JVM mit FIPS eingerichtet.

Geeignetes TLS-Zertifikat

Zum Herstellen einer Verbindung mit SQL Server im FIPS-Modus ist ein gültiges TLS/SSL-Zertifikat erforderlich. Installieren oder importieren Sie das Zertifikat in den Java-Keystore auf dem Clientcomputer (JVM), auf dem FIPS aktiviert ist.

Importieren des TLS-Zertifikats in den Java-Keystore

Für FIPS müssen Sie das Zertifikat (CERT-Datei) wahrscheinlich als PKCS oder in einem anbieterspezifischen Format importieren. Verwenden Sie den folgenden Codeausschnitt, um das TLS/SSL-Zertifikat zu importieren und im geeigneten Keystoreformat in einem Arbeitsverzeichnis zu speichern. TRUST_STORE_PASSWORD ist Ihr Kennwort für den Java-Keystore.

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);
}

Das folgende Beispiel importiert ein Azure-TLS/SSL-Zertifikat im PKCS12-Format mit dem Anbieter „BouncyCastle“. Das Zertifikat wird mithilfe des folgenden Codeausschnitts in das Arbeitsverzeichnis MyTrustStore_PKCS12 importiert:

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

Geeignete Richtliniendateien

Für einige FIPS-Anbieter sind uneingeschränkte Richtlinien-JAR-Dateien erforderlich. Laden Sie in solchen Fällen für Sun und Oracle die Richtliniendateien „Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction“ für JRE 8 oder JRE 7 herunter.

Geeignete Konfigurationsparameter

Konfigurieren Sie Verbindungseigenschaften wie in der folgenden Tabelle gezeigt, um den JDBC-Treiber im FIPS-konformen Modus auszuführen.

Eigenschaften

Eigenschaft type Standard BESCHREIBUNG Notizen
encrypt Zeichenfolge [„true/false/strict“] "true" In einer JVM-Umgebung mit aktiviertem FIPS sollte die encrypt-Eigenschaft true lauten. Der Standardwert wurde in Version 10.2 von FALSE in TRUE geändert. In Version 11.2.0 wurde der Typ von Boolean in String geändert, und die Option „strict“ wurde hinzugefügt, um die Unterstützung von TDS 8.0 zu ermöglichen.
TrustServerCertificate Boolesche Werte ["TRUE / FALSE"] „FALSE“ Für FIPS muss der Benutzer die Zertifikatkette validieren, daher sollte der Wert false für diese Eigenschaft verwendet werden.
trustStore String NULL Der Dateipfad Ihres Java-Keystores, in den Sie das Zertifikat importiert haben. Wenn Sie das Zertifikat auf Ihrem System installieren, muss hier nichts übergeben werden. Der Treiber verwendet cacerts- oder jssecacerts-Dateien.
trustStorePassword String NULL Das Kennwort, das zum Überprüfen der Integrität der trustStore-Daten verwendet wird.
fips Boolesche Werte ["TRUE / FALSE"] „FALSE“ In einer JVM-Umgebung mit aktiviertem FIPS sollte diese Eigenschaft true lauten. Hinzugefügt in 6.1.4 (stabiles Release: 6.2.2)
fipsProvider String NULL In JVM konfigurierter FIPS-Anbieter. Beispiele: BCFIPS oder SunPKCS11-NSS. Hinzugefügt in 6.1.2 (stabiles Release: 6.2.2), veraltet in 6.4.0 – ausführliche Informationen finden Sie hier.
trustStoreType String JKS Legen Sie für den FIPS-Modus den Vertrauensspeichertyp auf PKCS12 oder auf einen vom FIPS-Anbieter definierten Typ fest. Hinzugefügt in 6.1.2 (stabiles Release: 6.2.2)