Режим FIPS
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). |