안녕하세요. 연이 입니다.

세미나 Q&A에서 "인증서가 만료가 되면 어떻게 되는지에 대한 질문에 제가 TEST를 해보고 올려드리겠습니다."

라고 하였는데, 지금에서야 올립니다.

죄송합니다 _(__)_;

 

TEST QUERY는 세미나에서 쓰였던 쿼리를 그대로 재 활용하겠습니다.

먼저, 인증서를 아래와 같이 만들어 줍니다.

 

/***************************************************

** 데이터베이스암호화

**        인증서만들기

***************************************************/

CREATE CERTIFICATE 인증서 ENCRYPTION by password = '11qqAAZZ'

           WITH SUBJECT = '인증서를만들어봅시다.'

,          EXPIRY_DATE = '2015/12/31';

 

그 다음에 테스트 테이블을 만들어 줍니다.

 

-- 테스트용테이블만들기

BEGIN TRY

           CREATE TABLE expirydate_test (

                     IDX INT IDENTITY(1,1)

           ,          ENCRYPTION_TEXT VARBINARY(MAX)

           ,          getDATETIME DATETIME DEFAULT(GETDATE())

           )

END TRY

BEGIN CATCH END CATCH

 

그리고 나서 인증서를 이용하여 암호화 데이터를 테스트 테이블로 입력을 시켜보겠습니다.

 

-- 암호화하여데이터넣기

INSERT INTO expirydate_test VALUES (EncryptByCert(Cert_ID('인증서'),'이승연비밀번호암호'), getdate())

GO 20

 

위와 같이 약 20건의 데이터를 넣고, 복호화를 하겠습니다.

 

-- 복호화하여데이터검색하기

SELECT CAST((decryptByCert(Cert_ID('인증서'), ENCRYPTION_TEXT, N'11qqAAZZ')) as varchar(max))

, getDATETIME FROM expirydate_test

 

1복호화.jpg

 

위 그림과 같이 이상없이 잘 복호화가 된것을 확인 하실 수 있습니다.

이제 시스템날짜를 수정하여 만료일을 지난 날짜로 세팅을 하여 보겠습니다.

 

시스템날짜변경하기.jpg

 

위 그림과 같이 시스템날짜를 변경을 하고, QUERY문을 날려 확인하겠습니다.

 

시스템날짜검색(1).jpg

 

위 그림과 같이 인증서 만료일은 2010-12-31 이고 현재 시스템날짜는 2011-02-05일 임을 확인 하실 수 있습니다.

아래 쿼리로 데이터 한건을 넣고, 복호화를 하셔도 아무런 이상이 없이 복호화가 되는걸 확인 하실 수 있습니다.

 

시스템날짜검색(2).jpg

 

즉, 인증서에 만료일이 설정이 되어 있어도 정상적으로 복호화가 되고 있습니다. 해서 MSDN 살펴본 결과 MSDN에 다음과 같은 문구가 있었습니다.

 

EXPIRY_DATE = 'mm/dd/yyyy'
인증서가 만료되는 날짜입니다. 지정하지 않으면 EXPIRY_DATE가 START_DATE의 일년 후 날짜로 설정됩니다. EXPIRY_DATE는 UTC 시간으로 표시되며 초 단위로 설정할 수 있습니다. SQL Server Service Broker는 만료 날짜를 검사하지만 인증서가 암호화에 사용되는 경우에는 만료되지 않습니다.

 

profile

안녕하세요 이승연 입니다.
MCT / MCITP / SQL Server 2008 First Frontier Group
http://www.sqler.com / http://www.sqlworld.pe.kr /http://ddoung2.tistory.com / http://gdbt.tistory.com