Usando criptografia sem validação
O SQL Server sempre criptografa pacotes de rede associados a logon. Se nenhum certificado tiver sido provisionado no servidor quando ele foi inicializado, o SQL Server gerará um certificado autoassinado usado para criptografar pacotes de login.
Os aplicativos também podem solicitar a criptografia de todo o tráfego de rede usando palavras-chave de cadeia de conexão ou propriedades de conexão. As palavras-chave são "Encrypt" para ODBC e OLE DB, quando uma cadeia de caracteres do provedor com IDbInitialize::Initialize estiver sendo usada ou "Use Encryption for Data" para ADO e OLE DB, quando uma cadeia de inicialização estiver sendo usada com IDataInitialize. O SQL Server Configuration Manager também pode fazer essa configuração usando a opção Forçar Criptografia de Protocolo. Por padrão, a criptografia de todo o tráfego de rede para uma conexão requer que um certificado seja aprovisionado no servidor.
Para obter informações sobre as palavras-chave de cadeia de conexão, consulte Usando palavras-chave da cadeia de conexão com o SQL Server Native Client.
Para permitir o uso da criptografia quando um certificado for aprovisionado no servidor, o SQL Server Gerenciador de Configurações pode ser usado a fim de definir as opções Forçar Criptografia de Protocolo e Confiar em Certificado do Servidor. Neste caso, a criptografia usará um certificado do servidor autoassinado sem validação, se nenhum certificado verificável tiver sido provisionado no servidor.
Os aplicativos também podem usar a palavra-chave "TrustServerCertificate" ou seu atributo de conexão associado para garantir a criptografia. As configurações do aplicativo nunca reduzem o nível de segurança definido pelo SQL Server Gerenciador de Configurações de Cliente, mas podem fortalecê-la. Por exemplo, se a opção Forçar Criptografia de Protocolo não for definida para o cliente, um aplicativo solicitar a criptografia por conta própria. Para garantir a criptografia até mesmo quando um certificado do servidor não foi provisionado, um aplicativo pode solicitar a criptografia e "TrustServerCertificate". Porém, se "TrustServerCertificate" não for habilitado na configuração do cliente, um certificado do servidor provisionado ainda será necessário. A tabela a seguir descreve todos os casos:
Configuração do cliente Forçar Criptografia de Protocolo |
Configuração do cliente Confiar em Certificado do Servidor |
Atributo de conexão/cadeia de conexão Criptografar/Usar criptografia de dados |
Atributo de conexão/cadeia de conexão Confiar em Certificado do Servidor |
Resultado |
---|---|---|---|---|
Não |
N/A |
Não (padrão) |
Ignorado |
Não ocorre criptografia. |
Não |
N/A |
Sim |
Não (padrão) |
A criptografia só ocorrerá se houver um certificado de servidor verificável; caso contrário, a tentativa de conexão falhará. |
Não |
N/A |
Sim |
Sim |
A criptografia sempre ocorre, mas pode usar um certificado do servidor autoassinado. |
Sim |
Não |
Ignorado |
Ignorado |
A criptografia só ocorrerá se houver um certificado de servidor verificável; caso contrário, a tentativa de conexão falhará. |
Sim |
Sim |
Não (padrão) |
Ignorado |
A criptografia sempre ocorre, mas pode usar um certificado do servidor autoassinado. |
Sim |
Sim |
Sim |
Não (padrão) |
A criptografia só ocorrerá se houver um certificado de servidor verificável; caso contrário, a tentativa de conexão falhará. |
Sim |
Sim |
Sim |
Sim |
A criptografia sempre ocorre, mas pode usar um certificado de servidor autoassinado. |
Provedor OLE DB do SQL Server Native Client
O provedor OLE DB do SQL Server Native Client oferece suporte a criptografia sem validação através da adição da propriedade de inicialização de fonte de dados SSPROP_INIT_TRUST_SERVER_CERTIFICATE, que é implementada no conjunto de propriedades DBPROPSET_SQLSERVERDBINIT. Além disso, uma nova palavra-chave de cadeia de conexão, “TrustServerCertificate”, foi adicionada. Ela aceita valores “yes” ou “no”; “no” é o padrão. Ao usar componentes de serviço, aceita os valores true ou false; false é o padrão.
Para obter mais informações sobre aprimoramentos realizados no conjunto de propriedades DBPROPSET_SQLSERVERDBINIT, consulte Propriedades de inicialização e autorização.
Driver ODBC do SQL Server Native Client
O driver ODBC do SQL Server Native Client oferece suporte a criptografia sem validação por meio de adições às funções SQLSetConnectAttr e SQLGetConnectAttr. SQL_COPT_SS_TRUST_SERVER_CERTIFICATE foi adicionado para aceitar SQL_TRUST_SERVER_CERTIFICATE_YES ou SQL_TRUST_SERVER_CERTIFICATE_NO, com SQL_TRUST_SERVER_CERTIFICATE_NO sendo padrão. Além disso, uma nova palavra-chave de cadeia de conexão, “TrustServerCertificate”, foi adicionada. Ela aceita valores “yes” ou “no”; “no” é o padrão.