SQL 사용자 Tip & 강좌
안녕하세요. 연이 입니다.
세미나 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
위 그림과 같이 이상없이 잘 복호화가 된것을 확인 하실 수 있습니다.
이제 시스템날짜를 수정하여 만료일을 지난 날짜로 세팅을 하여 보겠습니다.
위 그림과 같이 시스템날짜를 변경을 하고, QUERY문을 날려 확인하겠습니다.
위 그림과 같이 인증서 만료일은 2010-12-31 이고 현재 시스템날짜는 2011-02-05일 임을 확인 하실 수 있습니다.
아래 쿼리로 데이터 한건을 넣고, 복호화를 하셔도 아무런 이상이 없이 복호화가 되는걸 확인 하실 수 있습니다.
즉, 인증서에 만료일이 설정이 되어 있어도 정상적으로 복호화가 되고 있습니다. 해서 MSDN 살펴본 결과 MSDN에 다음과 같은 문구가 있었습니다.
EXPIRY_DATE = 'mm/dd/yyyy'
인증서가 만료되는 날짜입니다. 지정하지 않으면 EXPIRY_DATE가 START_DATE의 일년 후 날짜로 설정됩니다. EXPIRY_DATE는 UTC 시간으로 표시되며 초 단위로 설정할 수 있습니다. SQL Server Service Broker는 만료 날짜를 검사하지만 인증서가 암호화에 사용되는 경우에는 만료되지 않습니다.

안녕하세요 이승연 입니다.
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


오호... 기다리던 내용이~! ㅋ
그럼 암호화에 사용되는 인증서의 만료시간 등을 체크해서 관리자에게 알려주는 기능을 만들어서 사용해야겠네요 ㅇㅅㅇa