Mode FIPS
Driver Microsoft JDBC untuk SQL Server mendukung berjalan di JVM yang dikonfigurasi agar Sesuai FIPS 140.
Prasyarat
- JVM yang dikonfigurasi FIPS
- Sertifikat TLS/SSL yang sesuai
- File kebijakan yang sesuai
- Parameter Konfigurasi yang Sesuai
JVM yang dikonfigurasi FIPS
Umumnya, aplikasi dapat mengonfigurasi java.security
file untuk menggunakan penyedia kripto yang mematuhi FIPS. Lihat dokumentasi khusus untuk JVM Anda untuk cara mengonfigurasi kepatuhan FIPS 140.
Untuk melihat modul yang disetujui untuk Konfigurasi FIPS, lihat Modul Tervalidasi dalam Program Validasi Modul Kriptografi.
Vendor mungkin memiliki beberapa langkah lagi untuk mengonfigurasi JVM dengan FIPS.
Sertifikat TLS yang sesuai
Untuk menyambungkan ke SQL Server dalam mode FIPS, Sertifikat TLS/SSL yang valid diperlukan. Instal atau impor ke Java Key Store pada komputer klien (JVM) tempat FIPS diaktifkan.
Mengimpor sertifikat TLS di Java keyStore
Untuk FIPS, kemungkinan besar Anda perlu mengimpor sertifikat (.cert) dalam PKCS atau format khusus penyedia. Gunakan cuplikan berikut untuk mengimpor sertifikat TLS/SSL dan menyimpannya dalam direktori kerja dengan format KeyStore yang sesuai. TRUST_STORE_PASSWORD adalah kata sandi Anda untuk 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);
}
Contoh berikut adalah mengimpor Sertifikat Azure TLS/SSL dalam format PKCS12 dengan Penyedia BouncyCastle. Sertifikat diimpor di direktori kerja bernama MyTrustStore_PKCS12 dengan menggunakan cuplikan berikut:
saveGenericKeyStore(BCFIPS, PKCS12, "SQLAzure SSL Certificate Name", "SQLAzure.cer");
File kebijakan yang sesuai
Untuk beberapa Penyedia FIPS, diperlukan jar Kebijakan yang tidak dibatasi. Dalam kasus seperti itu, untuk Sun / Oracle, unduh File Kebijakan Yurisdiksi Kekuatan Tak Terbatas Java Cryptography Extension (JCE) untuk JRE 8 atau JRE 7.
Parameter konfigurasi yang sesuai
Untuk menjalankan Driver JDBC dalam mode sesuai FIPS, konfigurasikan properti koneksi seperti yang ditunjukkan dalam tabel berikut.
Properti
Properti | Tipe | Default | Deskripsi | Catatan |
---|---|---|---|---|
encrypt |
String ["true / false / strict"] | "true" | Untuk properti enkripsi JVM yang diaktifkan FIPS harus benar | Default berubah dari false ke true di versi 10.2. Di versi 11.2.0, jenis berubah dari boolean ke String dan opsi ketat ditambahkan untuk memungkinkan dukungan TDS 8.0. |
TrustServerCertificate |
boolean ["true / false"] | "false" | Untuk FIPS, pengguna perlu memvalidasi rantai sertifikat, sehingga pengguna harus menggunakan nilai "false" untuk properti ini. | |
trustStore |
String | nihil | Jalur file Java Keystore tempat Anda mengimpor sertifikat. Jika Anda menginstal sertifikat pada sistem Anda, maka tidak perlu meneruskan apa pun. Driver menggunakan kacert atau file jssecacerts. | |
trustStorePassword |
String | nihil | Kata sandi yang digunakan untuk memeriksa integritas data trustStore. | |
fips |
boolean ["true / false"] | "false" | Untuk JVM yang diaktifkan FIPS, properti ini harus benar | Ditambahkan dalam 6.1.4 (Rilis stabil 6.2.2) |
fipsProvider |
String | nihil | Penyedia FIPS dikonfigurasi di JVM. Misalnya, BCFIPS atau SunPKCS11-NSS | Ditambahkan dalam 6.1.2 (Rilis stabil 6.2.2), tidak digunakan lagi dalam 6.4.0 - lihat detailnya Di sini. |
trustStoreType |
String | JKS | Untuk mode FIPS atur jenis penyimpanan kepercayaan baik PKCS12 atau jenis yang ditentukan oleh penyedia FIPS | Ditambahkan dalam 6.1.2 (Rilis stabil 6.2.2) |