Поделиться через


Режим FIPS

Скачать драйвер JDBC

Microsoft JDBC Driver for SQL Server поддерживает запуск в виртуальных машинах Java, настроенных на соответствие FIPS 140.

Необходимые компоненты

  • Виртуальная машина Java с конфигурацией FIPS
  • Соответствующий TLS/SSL-сертификат.
  • Соответствующие файлы политики
  • Соответствующие параметры конфигурации

Виртуальная машина Java с конфигурацией FIPS

Как правило, приложения могут настроить файл java.security для использования поставщиков шифрования, соответствующих FIPS. Сведения об обеспечении соответствия FIPS 140 см. в документации по вашей виртуальной машине Java.

Чтобы просмотреть утвержденные модули для конфигурации FIPS, ознакомьтесь с этой статьей.

Поставщики могут выполнять некоторые дополнительные действия по настройке виртуальной машины Java в соответствии с FIPS.

Соответствующий TLS-сертификат

Чтобы подключиться к SQL Server в режиме FIPS, требуется действительный TLS/SSL-сертификат. Установите или импортируйте его в хранилище ключей Java на клиентском компьютере (виртуальная машина Java), где включен режим FIPS.

Импорт TLS-сертификата в хранилище ключей Java

Для FIPS, скорее всего, потребуется импортировать сертификат (CERT) в формате PKCS или в формате, характерном для поставщика. Используйте следующий фрагмент кода, чтобы импортировать TLS/SSL-сертификат и сохранить его в рабочем каталоге в соответствующем формате хранилища ключей. TRUST_STORE_PASSWORD — пароль для хранилища ключей 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);
}

В следующем примере импортируется TLS/SSL-сертификат Azure в формате PKCS12 с помощью поставщика BouncyCastle. Сертификат импортируется в рабочий каталог с именем MyTrustStore_PKCS12 с помощью следующего фрагмента кода:

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

Соответствующие файлы политики

Для некоторых поставщиков FIPS требуется неограниченная политика JAR-файлов. В таких случаях скачайте для Sun и Oracle файлы политики юрисдикции неограниченной стойкости Java Cryptography Extension (JCE) для JRE 8 или JRE 7.

Соответствующие параметры конфигурации

Чтобы запустить драйвер JDBC в режиме, соответствующем FIPS, настройте свойства подключения, как показано в следующей таблице.

Свойства

Свойство Тип По умолчанию. Описание Основание
encrypt Строка ["true/ false / strict"] "true" Свойство для шифрования виртуальной машины Java с поддержкой FIPS должно иметь значение true. Значение по умолчанию изменилось с false на true в версии 10.2. В версии 11.2.0 тип изменился с логического типа на String, а строгий параметр был добавлен для поддержки TDS 8.0.
TrustServerCertificate логическое значение ["true / false"] "false" Для FIPS пользователь должен проверить цепочку сертификатов, поэтому ему нужно использовать значение false для этого свойства.
trustStore Строка null Путь к файлу хранилища ключей Java, куда был импортирован сертификат. Если установить сертификат в системе, не нужно ничего передавать. Драйвер использует файлы cacerts или jssecacerts.
trustStorePassword Строка null Пароль, используемый для проверки целостности данных trustStore.
fips логическое значение ["true / false"] "false" Свойство для виртуальной машины Java с поддержкой FIPS должно иметь значение true. Добавлено в версии 6.1.4 (стабильный выпуск 6.2.2).
fipsProvider Строка null Поставщик FIPS, настроенный в виртуальной машине Java. Например, BCFIPS или SunPKCS11-NSS. Добавлено в версии 6.1.2 (стабильный выпуск 6.2.2), не рекомендуется в версии 6.4.0. Дополнительные сведения см. в этом блоге.
trustStoreType Строка JKS Для режима FIPS задайте для хранилища доверия тип PKCS12 или тип, определенный поставщиком FIPS. Добавлено в версии 6.1.2 (стабильный выпуск 6.2.2).