Partilhar via


Modo FIPS

Baixar driver JDBC

O Microsoft JDBC Driver para SQL Server suporta a execução em JVMs configuradas para serem compatíveis com FIPS 140.

Pré-requisitos

  • JVM configurada por FIPS
  • Certificado TLS/SSL Apropriado
  • Ficheiros de políticas apropriados
  • Parâmetros de Configuração Apropriados

JVM configurada por FIPS

Geralmente, as aplicações podem configurar o java.security ficheiro para usar fornecedores criptográficos compatíveis com FIPS. Consulte a documentação específica da sua JVM para saber como configurar a conformidade com o FIPS 140.

Para ver os módulos aprovados para a Configuração FIPS, consulte Módulos Validados no Programa de Validação de Módulos Criptográficos.

Os fornecedores podem ter alguns passos adicionais para configurar uma JVM com FIPS.

Certificado TLS apropriado

Para se ligar ao SQL Server em modo FIPS, é necessário um Certificado TLS/SSL válido. Instale-o ou importe para a Java Key Store na máquina cliente (JVM) onde o FIPS está ativado.

Importação de certificado TLS na Java KeyStore

Para FIPS, é provável que precise importar o certificado (.cert) em formato PKCS ou num formato específico do fornecedor. Use o seguinte excerto para importar o certificado TLS/SSL e armazená-lo numa pasta funcional com o formato KeyStore apropriado. TRUST_STORE_PASSWORD é a tua palavra-passe para a 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);
}

O exemplo seguinte é a importação de um Certificado Azure TLS/SSL em formato PKCS12 com o Fornecedor BouncyCastle. O certificado é importado para o diretório de trabalho denominado MyTrustStore_PKCS12 usando o seguinte excerto:

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

Ficheiros de políticas apropriados

Para alguns Fornecedores FIPS, são necessários ficheiros JAR de política irrestrita. Nesses casos, para Sun / Oracle, descarregue os Ficheiros de Política de Jurisdição de Força Ilimitada da Java Cryptography Extension (JCE) para JRE 8 ou JRE 7.

Parâmetros de configuração apropriados

Para executar o Driver JDBC em modo compatível com FIPS, configure as propriedades da ligação conforme mostrado na tabela seguinte.

Propriedades

Propriedade Tipo Predefinido Description Observações
encrypt String ["verdadeiro / falso / estrito"] verdadeiro Para uma JVM com FIPS ativado, a definição de encriptação deve ser ativada O padrão mudou de falso para verdadeiro na versão 10.2. Na versão 11.2.0, o tipo mudou de booleano para String e foi adicionada a opção estrita para permitir suporte a TDS 8.0.
TrustServerCertificate Booleano ["verdadeiro / falso"] falso Para o FIPS, o utilizador precisa de validar a cadeia de certificados, pelo que deve usar o valor "falso" para esta propriedade.
trustStore String null O caminho do ficheiro Java Keystore onde importou o seu certificado. Se instalares o certificado no teu sistema, então não precisas de passar nada. O driver utiliza ficheiros cacerts ou jssecacerts.
trustStorePassword String null A senha usada para verificar a integridade dos dados trustStore.
fips Booleano ["verdadeiro / falso"] falso Para JVM com FIPS esta propriedade deve ser verdadeira Adicionado em 6.1.4 (Versão estável 6.2.2)
fipsProvider String null Provedor FIPS configurado na JVM. Por exemplo, BCFIPS ou SunPKCS11-NSS Adicionado em 6.1.2 (versão estável 6.2.2), descontinuado em 6.4.0. Para mais informações, consulte Remoção de propriedade de conexão - fipsProvider.
trustStoreType String JKS Para o modo FIPS, defina o tipo de armazenamento de confiança, seja PKCS12 ou tipo definido pelo fornecedor FIPS Adicionado em 6.1.2 (Versão estável 6.2.2)