Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 18.9. CRL(Certificate Revocation List) 관리 [링크 복사], [링크+제목 복사],
조회: 32063
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
(연관된 글이 7개 있습니다.)

6. CRL(Certificate Revocation List) 관리


사실, 이 부분은 예전에는 그다지 중요한 사항이 아니었습니다. 하지만 IE7 과 IIS 7의 강화된 보안 설정으로 인해 이젠 CRL에 대한 접근 설정이 필수가 되었습니다.

그렇다면, CRL이 뭘까요? 이름에서 알 수 있듯이, 여러 가지 사유로 인해 이미 발행된 인증서에 대해서 "폐기"를 한 목록입니다. 실제로, Windows 2003의 "인증 기관" MMC 관리자에서는 다음과 같이 "발급된 인증서"에 대해서 해지를 할 수 있습니다.

[그림: MMC 관리자에서 인증서 해지 선택]
cert_validate_3.png

[그림: 인증서 해지 사유 선택]
cert_validate_4.png

어떤 사유에 의해서든지, 일단 위와 같은 작업을 통해 인증서가 해지되면, 해당 인증서는 "해지된 인증서" 목록으로 옮겨지게 됩니다.

[그림: 해지된 인증서 보기]
cert_validate_5.png

위의 화면에서 해지된 인증서를 다시 "발급된 인증서" 쪽으로 옮길 수 있는데, 이때 해지 이유가 "인증서 대기"일 때만 가능할 뿐, 다른 사유로 인해 해지된 경우에는 다시 복원할 수 없습니다.




일단, 위와 같은 식으로 간단하게 CRL 관리를 할 수 있는데요. 문제는 이렇게 해지된 인증서에 대해서 클라이언트 측에서 어떻게 알 수 있느냐입니다.

이 부분은 사실 좀 원시적이라는 느낌이 들긴 하는데요. 대강의 시나리오는 이렇습니다. 서버는 해지된 인증서 목록을 주기적으로 CRL 확장자로 된 파일로 구성해서 공유될 수 있는 폴더에 올려 놓습니다. "인증 기관" MMC 콘솔에서는 아래와 같은 동작을 통해서 해지된 인증서를 "게시"할 수 있습니다. (또한, 주기적으로 저장되도록 설정이 되어 있기도 합니다.)

cert_validate_6.png

이후에는 클라이언트들이 필요할 때마다 서버로부터 해당 CRL 파일을 다운로드해 자신이 검증해야 할 인증서가 해지 목록에 있는지를 살펴보게 됩니다.

일례로, 웹 브라우저가 "https://www.sysnet.pe.kr"을 방문한 경우, 해당 웹 사이트에 사용된 SSL 인증서에 대해서 기본적으로 날짜 제한에 걸렸는지, 도메인 명과 일치하는지 등의 검사를 한 다음, 필요하다면 해당 인증서가 해지되었는지를 알기 위해 지정된 URI로부터 CRL 파일을 다운로드 받아서 인증서 해지 여부를 알아내게 되는 것입니다.

그렇다면, 웹 브라우저는 CRL 목록이 어디 있는지를 어떻게 알 수 있을까요? 간단합니다. 바로 인증서에 들어 있습니다. 아래의 화면은 제 웹 사이트에 사용된 SSL 인증서의 CRL 배포 설정을 보여주고 있습니다.

cert_serv_revoke_settings_3.png

보시는 바와 같이, CRL을 배포할 수 있는 지점은 여러 개가 될 수 있습니다. 그래도 가장 일반적으로 사용할 수 있는 것이 HTTP 배포일 텐데요. 실제로, 여러분들의 웹 브라우저에서 "http://w32.sysnet.pe.kr/CertEnroll/w32.sysnet.pe.kr(3).crl"이라고 입력하게 되면 제 웹 서버에서 배포하는 CRL 목록 파일을 받아볼 수 있습니다.




이제 문제는, 인증서에 포함될 "CRL Distribution Point"를 지정해 주는 방법이 남았군요.

역시 "인증 기관" MMC 관리자에서 해당 서버 노드 (아래에서는 "w32.sysnet.pe.kr")를 마우스 오른쪽 버튼으로 누르면 나오는 메뉴의 "등록 정보" 창을 선택하면 다음과 같은 "Extensions" 탭 내용의 CDP(CRL Distribution Point)를 설정할 수 있는 화면이 나옵니다.

cert_validate_7.png

보시는 것처럼 "Add" 버튼을 통한 추가도 가능하지만, 이미 기존 항목 중에는 "http://<ServerDNSName>/CertEnroll/<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl"과 같이 http 프로토콜까지 등록이 되어 있기 때문에 그것을 편집해 주는 것이 좋겠습니다.

이 중에서, 저 같은 경우에는 "ServerDNSName" 값이 "longhorn5600.themost.pe.kr"로 들어가 있습니다. 왜냐하면 themost라는 테스트 AD 서버에 "longhorn5600"이라는 컴퓨터를 등록시켜 놨기 때문입니다. 그렇다면, 이것을 현실적으로 사용할 수 있는 "www.sysnet.pe.kr"로 설정해야 할 텐데요. 제가 방법을 모르는 것인지는 모르겠지만, 공식적인 "관리 도구"를 통한 방법은 제공되지 않으며, 레지스트리에서 해당 값들을 직접 수정해 주어야 합니다. 그것도 "ServerDNSName"만을 수정해 주는 레지스트리는 없고, 다음 화면과 같이 "HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\w32.sysnet.pe.kr" 노드의 "CRLPublicationURLs" 값에서 http로 시작하는 부분을 자신이 원하는 DNS 명으로 바꿔 준 후, "인증서 서비스"를 재시작해 주는 방법만 가능합니다.

cert_validate_8.png

즉, 저 같은 경우에는 다음과 같이 http 부분의 %1 값을 "www.sysnet.pe.kr"로 교체를 했습니다.

65:C:\Windows\system32\CertSrv\CertEnroll\%3%8%9.crl
79:ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10
6:http://www.sysnet.pe.kr/CertEnroll/%3%8%9.crl
0:file://\\%1\CertEnroll\%3%8%9.crl

이제, 정상적으로 CRL 배포 지점이 인증서에 반영이 되는지 확인하기 위해 "18.4. 사용자 인증서 발급"에서 설명한 데로, 새로운 인증서를 발급받아 봅니다.

보시는 것처럼, 이제 발급되는 모든 인증서의 CDP 값은 "https://www.sysnet.pe.kr/CertEnroll/w32.sysnet.pe.kr.crl"을 가리키게 됩니다.

cert_validate_9.png

/CertEnroll 가상 디렉토리는 인증서를 설치할 때 같이 IIS에 등록되어집니다. 만약, 그 경로를 바꿔 주면 역시 위의 "CRLPublicationURLs" 레지스트리 값도 함께 바꿔 주시면 됩니다.

혹시... 더 궁금한 거 있으신가요? ^^



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/24/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  [172]  173  174  175  176  177  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
699정성태4/16/200928589.NET Framework: 128. 이벤트 멤버의 명시적 구현파일 다운로드1
696정성태4/12/200927809오류 유형: 77. RDP 연결이 되지 않는 경우. [1]
693정성태4/9/200922291오류 유형: 76. "Client found response content type of '', but expected 'text/xml'. The request failed with an empty response.No Reports".
692정성태4/8/200935290.NET Framework: 127. ClickOnce로 ActiveX를 같이 배포하는 방법 [2]파일 다운로드1
690정성태4/5/200922867오류 유형: 75. Event Viewer - The data is invalid (13)
688정성태4/5/200928719VS.NET IDE: 60. Output 경로에 매크로 상수 사용하는 방법 [1]
687정성태4/5/200923298.NET Framework: 126. Composite Application Guidance for WPF and Silverlight
689정성태4/5/200923149    답변글 .NET Framework: 126.1. CAG - 빌드 환경 구성파일 다운로드1
691정성태4/6/200922944    답변글 .NET Framework: 126.2. CAG - Shell 띄우기파일 다운로드1
695정성태4/10/200924691    답변글 .NET Framework: 126.3. CAG - 간단한 유형의 모듈 제작파일 다운로드1
703정성태4/18/200923526        답변글 .NET Framework: 126.6. CAG - Tabbed MDI Shell 적용파일 다운로드1
697정성태4/13/200927767    답변글 .NET Framework: 126.4. CAG - Unity 컨테이너 사용 [1]파일 다운로드1
698정성태4/15/200927063    답변글 .NET Framework: 126.5. CAG에 MVVM 패턴 적용 (1) [2]파일 다운로드1
686정성태4/4/200948731웹: 11. IE 8 - TabProcGrowth 레지스트리 키 [2]
685정성태4/3/200949476개발 환경 구성: 38. Hyper-V 사용 후기 [5]
684정성태4/2/200923983오류 유형: 74. IE 8 설치 이후, VS.NET 위저드 화면 동작 오류
683정성태3/28/200930676디버깅 기술: 26. 보호 모드로 응용 프로그램 디버깅하는 방법 - 두 번째 이야기 [3]
682정성태3/27/200927853디버깅 기술: 25. 보호 모드로 응용 프로그램 디버깅하는 방법 [2]
681정성태3/23/200925022오류 유형: 73. SQL Server 2008 Express 설치 오류
680정성태3/21/200924919.NET Framework: 125. WPF - RadioButton에 대한 데이터바인딩(2) [1]파일 다운로드1
679정성태3/15/200920028오류 유형: 72. IE 8 멈춤 현상 - 두 번째 이야기
678정성태3/15/200925106개발 환경 구성: 37. Hyper-V에서 Vista의 Virtual Machine Bus 장치 인식 문제
677정성태3/15/200925640개발 환경 구성: 36. MSI P45 Neo3-FR V2 - RAID 1 구성
997정성태2/26/201120932    답변글 개발 환경 구성: 36.1. 개발 환경 구성: 34 - 1. RAID 1 구성 이후...
676정성태3/15/200922290오류 유형: 71. IE 8 RC1 - 멈춤 현상
675정성태3/14/200925166오류 유형: 70. Virtual Machine Additions 제거
... 166  167  168  169  170  171  [172]  173  174  175  176  177  178  179  180  ...