CREATE CERTIFICATE (Transact-SQL)

Agrega un certificado a una base de datos.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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 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' ]  

<date_options> ::=
    START_DATE = 'mm/dd/yyyy' | EXPIRY_DATE = 'mm/dd/yyyy'

Argumentos

  • certificate_name
    Es el nombre por el que se conoce el certificado en la base de datos.
  • AUTHORIZATION user_name
    Es el nombre del usuario propietario del certificado.
  • ASSEMBLY assembly_name
    Especifica un ensamblado firmado que se ha cargado en la base de datos.
  • [ EXECUTABLE ] FILE ='path_to_file'
    Especifica la ruta completa, incluido el nombre de archivo, de acceso a un archivo codificado con DER que contiene el certificado. Si se utiliza la opción EXECUTABLE, el archivo es una DLL firmada por el certificado. path_to_file puede ser una ruta local o una ruta UNC a una ubicación de red. Se obtendrá acceso al archivo en el contexto de seguridad de la cuenta de servicio de SQL Server. Esta cuenta debe disponer de los necesarios permisos de sistema de archivos.
  • WITH PRIVATE KEY
    La cláusula PRIVATE KEY especifica que la clave privada del certificado se ha cargado en SQL Server. Esta cláusula sólo es válida si se crea el certificado desde un archivo. Para cargar la clave privada de un ensamblado, utilice ALTER CERTIFICATE.
  • FILE ='path_to_private_key'
    Especifica la ruta completa, incluido el nombre de archivo, de acceso a la clave privada. path_to_private_key puede ser una ruta local o una ruta UNC a una ubicación de red. Se obtendrá acceso al archivo en el contexto de seguridad de la cuenta de servicio de SQL Server. Esta cuenta debe disponer de los necesarios permisos de sistema de archivos.
  • DECRYPTION BY PASSWORD = 'key_password'
    Especifica la contraseña necesaria para descifrar una clave privada recuperada de un archivo. La cláusula es opcional si la clave privada está protegida por una contraseña NULL. No se recomienda guardar una clave privada de un archivo sin protección de contraseña. Si no se especifica una contraseña requerida, la instrucción registrará errores.
  • ENCRYPTION BY PASSWORD ='password'
    Especifica la contraseña que se utilizará para cifrar la clave privada. Utilice esta opción sólo si desea cifrar el certificado con una contraseña. Si se omite esta cláusula, la clave privada se cifrará con la clave maestra de base de datos. La contraseña debe cumplir la directiva de complejidad de contraseñas. Para obtener más información, vea Directiva de contraseñas.
  • SUBJECT = 'certificate_subject_name'
    El término asunto se refiere a un campo en los metadatos del certificado según lo establecido en el estándar X.509. El asunto puede tener una longitud máxima de 128 caracteres. Los asuntos que superen los 128 caracteres se truncarán al almacenarlos en el catálogo, pero el objeto binario grande (BLOB) que contiene el certificado conservará el nombre de asunto completo.
  • START_DATE ='mm/dd/yyyy'
    Es la fecha en la que el certificado comienza a ser válido. Si no se especifica, START_DATE será la fecha actual.
  • EXPIRY_DATE ='mm/dd/yyyy'
    Es la fecha en la que caduca el certificado. Si no se especifica, EXPIRY_DATE será una fecha un año posterior a la indicada en START_DATE
  • ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
    Hace que el certificado esté disponible para el iniciador de una conversación de diálogo de Service Broker. El valor predeterminado es ON.

Notas

Un certificado es un elemento que puede protegerse en el nivel de base de datos que sigue el estándar X.509 y admite los campos V1 de X.509. CREATE CERTIFICATE puede cargar un certificado desde un archivo o ensamblado. Esta instrucción también puede generar un par de claves y crear un certificado con firma personal.

Las claves privadas generadas por SQL Server tienen una longitud de 1024 bits. Las claves privadas importadas de un origen externo presentan una longitud mínima de 384 bits y una máxima de 3.456 bits. La longitud de una clave privada importada debe ser un entero múltiplo de 64 bits.

La clave privada debe corresponderse con la clave pública especificada por certificate_name.

Cuando se crea un certificado desde un contenedor, es opcional cargar la clave privada. Pero cuando SQL Server genera un certificado con firma personal, siempre se creará la clave privada. De manera predeterminada, la clave privada se cifra con la clave maestra de base de datos. Si no existe una clave maestra de base de datos y no se especifica una contraseña, la instrucción registrará errores.

No se requiere la opción ENCRYPTION BY PASSWORD si se cifra la clave privada con la clave maestra de base de datos. Utilice esta opción sólo si se cifra la clave privada con una contraseña. Si no se especifica una contraseña, la clave privada del certificado se cifrará con la clave maestra de base de datos. Al omitir esta cláusula se producirán errores si no se puede abrir la clave maestra de la base de datos.

No es necesario especificar una contraseña de descifrado si se cifra la clave privada con la clave maestra de base de datos.

[!NOTA] Las funciones integradas para el cifrado y firma no comprueban las fechas de caducidad de los certificados. Los usuarios de estas funciones deben decidir cuándo comprobar la caducidad de los certificados.

Los argumentos START_DATE y EXPIRY_DATE no le permiten especificar horas para estas fechas. Sin embargo, puede usar las funciones de fecha y hora proporcionadas por SQL Server para agregar horas concretas a las fechas de inicio y caducidad del certificado. Para obtener más información, vea los siguientes temas:

Permisos

Requiere el permiso CREATE CERTIFICATE en la base de datos.

Ejemplos

A. Crear un certificado con firma personal

En el siguiente ejemplo se crea un certificado denominado Shipping04. La clave privada de este certificado está protegida con una contraseña.

USE AdventureWorks;
CREATE CERTIFICATE Shipping04 
   ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'
   WITH SUBJECT = 'Sammamish Shipping Records', 
   EXPIRY_DATE = '10/31/2009';
GO

B. Crear un certificado desde un archivo

En el siguiente ejemplo se crea un certificado en la base de datos y se carga el par de claves desde los archivos.

USE AdventureWorks;
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 

C. Crear un certificado desde un archivo ejecutable firmado

USE AdventureWorks;
CREATE CERTIFICATE Shipping19 
    FROM EXECUTABLE FILE = 'c:\Shipping\Certs\Shipping19.dll';
GO

Como alternativa, puede crear un ensamblado desde el archivo dll y crear un certificado desde el ensamblado.

USE AdventureWorks;
CREATE ASSEMBLY Shipping19 
    FROM ' c:\Shipping\Certs\Shipping19.dll' 
    WITH PERMISSION_SET = SAFE;
GO
CREATE CERTIFICATE Shipping19 FROM ASSEMBLY Shipping19;
GO

Vea también

Referencia

ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
EVENTDATA (Transact-SQL)

Otros recursos

Jerarquía de cifrado

Ayuda e información

Obtener ayuda sobre SQL Server 2005