CREATE CERTIFICATE(Transact-SQL)

데이터베이스에 인증서를 추가합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

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'

인수

  • certificate_name
    데이터베이스에서 인증서를 식별하는 이름입니다.
  • AUTHORIZATION user_name
    이 인증서를 소유하게 될 사용자의 이름입니다.
  • ASSEMBLY assembly_name
    데이터베이스에 이미 로드된 서명된 어셈블리를 지정합니다.
  • [ EXECUTABLE ] FILE ='path_to_file'
    인증서를 포함하는 DER 인코딩 파일에 대해 파일 이름을 포함한 전체 경로를 지정합니다. EXECUTABLE 옵션을 사용한 경우 파일은 인증서로 서명된 DLL입니다. path_to_file은 로컬 경로 또는 네트워크 위치에 대한 UNC 경로일 수 있습니다. 파일은 SQL Server 서비스 계정의 보안 컨텍스트에서 액세스됩니다. 이 계정에는 필요한 파일 시스템 사용 권한이 있어야 합니다.
  • WITH PRIVATE KEY
    인증서의 개인 키가 SQL Server에 로드되도록 지정한 PRIVATE KEY 절입니다. 이 절은 인증서가 파일에서 생성되는 경우에만 유효합니다. 어셈블리의 개인 키를 로드하려면 ALTER CERTIFICATE를 사용합니다.
  • FILE ='path_to_private_key'
    개인 키에 대한 파일 이름을 포함한 전체 경로를 지정합니다. path_to_private_key는 로컬 경로 또는 네트워크 위치에 대한 UNC 경로일 수 있습니다. 파일은 SQL Server 서비스 계정의 보안 컨텍스트에서 액세스됩니다. 이 계정에는 필요한 파일 시스템 사용 권한이 있어야 합니다.
  • DECRYPTION BY PASSWORD = 'key_password'
    파일에서 검색한 개인 키의 암호를 해독하는 데 필요한 암호를 지정합니다. 개인 키가 Null 암호로 보호되는 경우 이 절은 선택 사항입니다. 암호 보호 없이 개인 키를 파일에 저장하는 것은 권장되지 않습니다. 암호가 필요하지만 지정된 암호가 없으면 문이 실패합니다.
  • ENCRYPTION BY PASSWORD ='password'
    개인 키를 암호화하는 데 사용되는 암호를 지정합니다. 암호로 인증서를 암호화하려는 경우에만 이 옵션을 사용합니다. 이 절을 생략하면 개인 키가 데이터베이스 마스터 키로 암호화됩니다. 암호는 암호 복잡성 정책을 따라야 합니다. 자세한 내용은 암호 정책을 참조하십시오.
  • SUBJECT = 'certificate_subject_name'
    제목이란 단어는 X.509 표준에 정의된 것과 같이 인증서의 메타데이터에 있는 필드를 나타냅니다. 제목은 최대 128자까지 지정할 수 있습니다. 128자를 초과하는 제목은 카탈로그에 저장될 때 잘리지만 인증서가 포함된 BLOB(Binary Large Object)에는 전체 제목 이름이 포함됩니다.
  • START_DATE ='mm/dd/yyyy'
    인증서가 유효하게 되는 날짜입니다. 지정하지 않으면 START_DATE가 현재 날짜와 같게 설정됩니다.
  • EXPIRY_DATE ='mm/dd/yyyy'
    인증서가 만료되는 날짜입니다. 지정하지 않으면 EXPIRY_DATE가 START_DATE의 일년 후 날짜로 설정됩니다.
  • ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
    Service Broker 대화 기능의 시작자가 인증서를 사용할 수 있게 합니다. 기본값은 ON입니다.

주의

인증서는 X.509 표준을 따르고 X.509 V1 필드를 지원하는 데이터베이스 수준의 보안 개체입니다. CREATE CERTIFICATE는 파일이나 어셈블리로부터 인증서를 로드할 수 있습니다. 이 문은 또한 키 쌍을 생성하고 자체 서명된 인증서를 만들 수 있습니다.

SQL Server에서 생성되는 개인 키의 길이는 1024비트입니다. 외부 원본으로부터 가져온 개인 키의 최소 길이는 384비트이고 최대 길이는 3,456비트입니다. 가져온 개인 키의 길이는 64비트의 정수 배수여야 합니다.

개인 키는 certificate_name으로 지정한 공개 키와 일치해야 합니다.

컨테이너로부터 인증서를 만들 때 개인 키 로드는 선택 사항입니다. 하지만 SQL Server가 자체 서명된 인증서를 생성할 때 항상 개인 키가 생성됩니다. 기본적으로 개인 키는 데이터베이스 마스터 키를 사용하여 암호화됩니다. 데이터베이스 마스터 키가 없고 지정된 암호가 없으면 문이 실패합니다.

개인 키가 데이터베이스 마스터 키로 암호화되는 경우 ENCRYPTION BY PASSWORD 옵션이 필요하지 않습니다. 이 옵션은 개인 키가 암호로 암호화되는 경우에만 사용합니다. 지정된 암호가 없으면 인증서의 개인 키가 데이터베이스 마스터 키를 사용하여 암호화됩니다. 이 절을 생략하면 데이터베이스 마스터 키를 열 수 없는 경우 오류가 발생합니다.

데이터베이스 마스터 키를 사용하여 개인 키를 암호화한 경우에는 해독 암호를 지정할 필요가 없습니다.

[!참고] 암호화 및 서명에 대한 기본 제공 함수는 인증서의 만료 날짜를 검사하지 않습니다. 이러한 함수의 사용자는 인증서 만료에 대한 검사 시기를 결정해야 합니다.

START_DATE 및 EXPIRY_DATE 인수를 사용하면 이러한 날짜의 시간을 지정할 수 없습니다. 그러나 SQL Server에서 제공하는 날짜 및 시간 함수를 사용하여 인증서 시작 날짜와 만료 날짜에 특정 시간을 추가할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오.

사용 권한

데이터베이스에 대한 CREATE CERTIFICATE 권한이 필요합니다.

1. 자체 서명된 인증서 만들기

다음 예에서는 Shipping04라는 인증서를 만듭니다. 이 인증서의 개인 키는 암호를 사용하여 보호됩니다.

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

2. 파일로부터 인증서 만들기

다음 예에서는 데이터베이스에서 인증서를 만들고 파일로부터 키 쌍을 로드합니다.

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 

3. 서명된 실행 파일로부터 인증서 만들기

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

또는 dll 파일로부터 어셈블리를 만든 다음 어셈블리로부터 인증서를 만들 수 있습니다.

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

참고 항목

참조

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

관련 자료

암호화 계층

도움말 및 정보

SQL Server 2005 지원 받기