Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Banco de Dados SQL do Azure Synapse Analytics
no Microsoft Fabric
Adiciona um certificado a um banco de dados no SQL Server.
Esse recurso é incompatível com a exportação de banco de dados usando o Data Tier Application Framework (DACFx). Você deve descartar todos os certificados antes de exportar.
Note
No SQL Server 2022 (16.x), é possível fazer backup ou restaurar certificados com chaves privadas diretamente de e para arquivos ou blobs binários usando o formato PKCS (pares de chaves públicas) #12 ou PFX (troca de informações pessoais). Todos os certificados gerados pelo sistema têm uma força mínima de RSA-3072 no SQL Server 2022 (16.x).
O formato PKCS #12 ou PFX é um formato binário para armazenar o certificado do servidor, quaisquer certificados intermediários e a chave privada em um arquivo. Os arquivos PFX geralmente têm extensões como .pfx e .p12. Isso torna mais fácil para os clientes aderirem às atuais diretrizes de práticas recomendadas de segurança e padrões de conformidade que proíbem a criptografia RC4, eliminando a necessidade de usar ferramentas de conversão, como PVKConverter (para o formato PVK ou DER).
Transact-SQL convenções de sintaxe
Note
Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
Syntax
-- Syntax for SQL Server and Azure SQL Database
CREATE CERTIFICATE certificate_name [ AUTHORIZATION user_name ]
{ FROM <existing_keys> | <generate_new_keys> }
[ ACTIVE FOR BEGIN_DIALOG = { ON | OFF } ]
<existing_keys> ::=
ASSEMBLY assembly_name
| {
[ EXECUTABLE ] FILE = 'path_to_file'
[ WITH [FORMAT = 'PFX',]
PRIVATE KEY ( <private_key_options> ) ]
}
| {
BINARY = asn_encoded_certificate
[ WITH PRIVATE KEY ( <private_key_options> ) ]
}
<generate_new_keys> ::=
[ ENCRYPTION BY PASSWORD = 'password' ]
WITH SUBJECT = 'certificate_subject_name'
[ , <date_options> [ ,...n ] ]
<private_key_options> ::=
{
FILE = 'path_to_private_key'
[ , DECRYPTION BY PASSWORD = 'password' ]
[ , ENCRYPTION BY PASSWORD = 'password' ]
}
|
{
BINARY = private_key_bits
[ , DECRYPTION BY PASSWORD = 'password' ]
[ , ENCRYPTION BY PASSWORD = 'password' ]
}
<date_options> ::=
START_DATE = 'datetime' | EXPIRY_DATE = 'datetime'
-- Syntax for Parallel Data Warehouse
CREATE CERTIFICATE certificate_name
{ <generate_new_keys> | FROM <existing_keys> }
[ ; ]
<generate_new_keys> ::=
WITH SUBJECT = 'certificate_subject_name'
[ , <date_options> [ ,...n ] ]
<existing_keys> ::=
{
FILE ='path_to_file'
WITH PRIVATE KEY
(
FILE = 'path_to_private_key'
, DECRYPTION BY PASSWORD ='password'
)
}
<date_options> ::=
START_DATE ='datetime' | EXPIRY_DATE ='datetime'
Arguments
certificate_name
É o nome do certificado no banco de dados.
AUTORIZAÇÃO user_name
É o nome do usuário que possui esse certificado.
ASSEMBLEIA assembly_name
Especifica um assembly assinado que já foi carregado no banco de dados.
[ EXECUTÁVEL ] FICHEIRO = 'path_to_file'
Especifica o caminho completo, incluindo o nome do arquivo, para um arquivo codificado por DER que contém o certificado. Se a opção EXECUTÁVEL for usada, o arquivo é uma DLL que foi assinada pelo certificado.
path_to_file pode ser um caminho local ou um caminho UNC para um local de rede. O arquivo é acessado no contexto de segurança da conta de serviço do SQL Server. Essa conta deve ter as permissões necessárias do sistema de arquivos.
Important
O Banco de Dados SQL do Azure não dá suporte à criação de um certificado a partir de um arquivo ou ao uso de arquivos de chave privada.
BINÁRIO = asn_encoded_certificate
Bytes de certificado codificados ASN especificados como uma constante binária.
Aplica-se a: SQL Server 2012 (11.x) e posterior.
COM FORMATO = 'PFX'
Aplica-se a: SQL Server 2022 (16.x) e posterior
Especifica a geração de um certificado a partir de um arquivo PFX. Esta cláusula é opcional.
COM CHAVE PRIVADA
Especifica que a chave privada do certificado é carregada no SQL Server. Esta cláusula é inválida quando o certificado está sendo criado a partir de um assembly. Para carregar a chave privada de um certificado criado a partir de um assembly, use ALTER CERTIFICATE.
FICHEIRO ='path_to_private_key'
Especifica o caminho completo, incluindo o nome do arquivo, para a chave privada.
path_to_private_key pode ser um caminho local ou um caminho UNC para um local de rede. O arquivo é acessado no contexto de segurança da conta de serviço do SQL Server. Essa conta deve ter as permissões necessárias do sistema de arquivos.
Important
Essa opção não está disponível em um banco de dados contido ou no Banco de Dados SQL do Azure.
BINÁRIO = private_key_bits
Aplica-se a: SQL Server (Começando com o SQL Server 2012 (11.x)) e Banco de Dados SQL do Azure.
Bits de chave privada especificados como constante binária. Esses bits podem ser criptografados. Se encriptado, o utilizador deve fornecer uma palavra-passe de desencriptação. As verificações da política de palavra-passe não são efetuadas nesta palavra-passe. Os bits de chave privada devem estar em um formato de arquivo PVK.
DESENCRIPTAÇÃO POR PALAVRA-PASSE = 'key_password'
Especifica a senha necessária para descriptografar uma chave privada recuperada de um arquivo. Esta cláusula é opcional se a chave privada estiver protegida por uma palavra-passe nula. Salvar uma chave privada em um arquivo sem proteção por senha não é recomendado. Se uma senha for necessária, mas nenhuma senha for especificada, a instrução falhará.
ENCRIPTAÇÃO POR PALAVRA-PASSE = 'password'
Especifica a senha usada para criptografar a chave privada. Use essa opção somente se quiser criptografar o certificado com uma senha. Se essa cláusula for omitida, a chave privada será criptografada usando a chave mestra do banco de dados.
senha deve atender aos requisitos de diretiva de senha do Windows do computador que está executando a instância do SQL Server. Para obter mais informações, consulte Política de senha.
ASSUNTO = 'certificate_subject_name'
O termo assunto refere-se a um campo nos metadados do certificado, conforme definido na norma X.509. O assunto não deve ter mais de 64 caracteres e esse limite é imposto para o SQL Server no Linux. Para o SQL Server no Windows, o assunto pode ter até 128 caracteres. Os assuntos que excedem 128 caracteres são truncados quando são armazenados no catálogo, mas o objeto binário grande (BLOB) que contém o certificado mantém o nome completo do assunto.
START_DATE = 'hora do encontro'
É a data em que o certificado se torna válido. Se não for especificado, START_DATE é definido como igual à data atual. START_DATE está na hora UTC e pode ser especificado em qualquer formato que possa ser convertido em data e hora.
EXPIRY_DATE = 'hora do encontro'
É a data em que o certificado expira. Se não for especificado, EXPIRY_DATE é definido para uma data um ano após START_DATE. EXPIRY_DATE está na hora UTC e pode ser especificado em qualquer formato que possa ser convertido em data e hora. O SQL Server Service Broker verifica a data de validade. O Backup com Criptografia usando certificados também verifica a data de expiração e não permitirá que um novo backup seja criado com um certificado expirado, mas permitirá restaurações com um certificado expirado. No entanto, a expiração não é imposta quando o certificado é usado para criptografia de banco de dados ou Always Encrypted.
ATIVO PARA BEGIN_DIALOG = { ON | DESLIGADO }
Disponibiliza o certificado para o iniciador de uma conversa de diálogo do Service Broker. O valor padrão é ON.
Remarks
Um certificado é um protegível no nível de banco de dados que segue o padrão X.509 e suporta campos X.509 V1.
CREATE CERTIFICATE pode carregar um certificado de um arquivo, uma constante binária ou um assembly. Essa instrução também pode gerar um par de chaves e criar um certificado autoassinado.
A chave privada deve ser <= 2500 bytes em formato criptografado. As chaves privadas geradas pelo SQL Server têm 1024 bits de comprimento através do SQL Server 2014 (12.x) e 2048 bits de comprimento começando com o SQL Server 2016 (13.x). As chaves privadas importadas de uma fonte externa têm um comprimento mínimo de 384 bits e um comprimento máximo de 4.096 bits. O comprimento de uma chave privada importada deve ser um múltiplo inteiro de 64 bits. Os certificados usados para TDE são limitados a um tamanho de chave privada de 3456 bits.
O número de série inteiro do certificado é armazenado, mas apenas os primeiros 16 bytes aparecem na exibição do catálogo sys.certificates.
Todo o campo Emissor do certificado é armazenado, mas apenas os primeiros 884 bytes na exibição do catálogo sys.certificates.
A chave privada deve corresponder à chave pública especificada por certificate_name.
Quando você cria um certificado a partir de um contêiner, carregar a chave privada é opcional. Mas quando o SQL Server gera um certificado autoassinado, a chave privada é sempre criada. Por padrão, a chave privada é criptografada usando a chave mestra do banco de dados. Se a chave mestra do banco de dados não existir e nenhuma senha for especificada, a instrução falhará.
A ENCRYPTION BY PASSWORD opção não é necessária quando a chave privada é criptografada com a chave mestra do banco de dados. Utilize esta opção apenas quando a chave privada estiver encriptada com uma palavra-passe. Se nenhuma senha for especificada, a chave privada do certificado será criptografada usando a chave mestra do banco de dados. Se a chave mestra do banco de dados não puder ser aberta, omitir essa cláusula causará um erro.
Não é necessário especificar uma senha de descriptografia quando a chave privada é criptografada com a chave mestra do banco de dados.
Note
As funções internas para criptografia e assinatura não verificam as datas de validade dos certificados. Os usuários dessas funções devem decidir quando verificar a expiração do certificado.
Uma descrição binária de um certificado pode ser criada usando as funções CERTENCODED (Transact-SQL) e CERTPRIVATEKEY (Transact-SQL). Para obter um exemplo que usa CERTPRIVATEKEY e CERTENCODED para copiar um certificado para outro banco de dados, consulte o exemplo B no artigo CERTENCODED (Transact-SQL).
Os algoritmos MD2, MD4, MD5, SHA e SHA1 foram preteridos no SQL Server 2016 (13.x). Até o SQL Server 2016 (13.x), um certificado autoassinado é criado usando SHA1. A partir do SQL Server 2017 (14.x), um certificado autoassinado é criado usando SHA2_256.
Permissions
Requer permissão CREATE CERTIFICATE no banco de dados. Somente logons do Windows, logons do SQL Server e funções de aplicativo podem possuir certificados. Grupos e funções não podem possuir certificados.
Examples
A. Criando um certificado autoassinado
O exemplo a seguir cria um certificado chamado Shipping04. A chave privada deste certificado é protegida através de uma palavra-passe.
CREATE CERTIFICATE Shipping04
ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'
WITH SUBJECT = 'Sammamish Shipping Records',
EXPIRY_DATE = '20201031';
GO
B. Criando um certificado a partir de um arquivo
O exemplo a seguir cria um certificado no banco de dados, carregando o par de chaves dos arquivos.
CREATE CERTIFICATE Shipping11
FROM FILE = 'c:\Shipping\Certs\Shipping11.cer'
WITH PRIVATE KEY (FILE = 'c:\Shipping\Certs\Shipping11.pvk',
DECRYPTION BY PASSWORD = 'sldkflk34et6gs%53#v00');
GO
Important
O Banco de Dados SQL do Azure não dá suporte à criação de um certificado a partir de um arquivo.
C. Criando um certificado a partir de um arquivo executável assinado
CREATE CERTIFICATE Shipping19
FROM EXECUTABLE FILE = 'c:\Shipping\Certs\Shipping19.dll';
GO
Como alternativa, você pode criar um assembly a partir do dll arquivo e, em seguida, criar um certificado a partir do assembly.
CREATE ASSEMBLY Shipping19
FROM 'c:\Shipping\Certs\Shipping19.dll'
WITH PERMISSION_SET = SAFE;
GO
CREATE CERTIFICATE Shipping19 FROM ASSEMBLY Shipping19;
GO
Important
O Banco de Dados SQL do Azure não dá suporte à criação de um certificado a partir de um arquivo.
Important
A partir do SQL Server 2017 (14.x), a opção de configuração do servidor 'CLR strict security' impede o carregamento de assemblies sem primeiro configurar a segurança para eles. Carregue o certificado, crie um login a partir dele, conceda UNSAFE ASSEMBLY a esse login e carregue o assembly.
D. Criando um certificado autoassinado
O exemplo a seguir cria um certificado chamado Shipping04 sem especificar uma senha de criptografia. Este exemplo pode ser usado com o Analytics Platform System (PDW).
CREATE CERTIFICATE Shipping04
WITH SUBJECT = 'Sammamish Shipping Records';
GO
E. Criando um certificado a partir de um arquivo PFX
CREATE CERTIFICATE Shipping04
FROM FILE = 'c:\storedcerts\shipping04cert.pfx'
WITH
FORMAT = 'PFX',
PRIVATE KEY (
DECRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh'
);
Ver também
CERTIFICADO ALTER (Transact-SQL)
CERTIFICADO DE DESISTÊNCIA (Transact-SQL)
CERTIFICADO DE CÓPIA DE SEGURANÇA (Transact-SQL)
Hierarquia de criptografia
EVENTDATA (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)