부모글 보이기/감추기 윈도우즈 인증서 서비스 이야기 개인적으로 참 쓰고 싶었던 토픽인데, 이야기를 풀어나가는 것이 쉽지 않은 주제여서 그 동안 꽤나 망설였던 부분이기도 합니다. 그래도, 틈틈이 시간나는 데로 한번 써봐야 겠다는 생각이 들어서... 이렇게 시작합니다. ^^ 목차는 대강 다음과 같습니다. 1. 윈도우즈 인증서 서비스 설치 2. 웹 사이트에 SSL 을 적용 3.1 사용자 입장에서의 HTTPS 접근 (1) 3.2 사용자 입장에서의 HTTPS 접근 (2) 4. 사용자 인증서 발급 5.1 인증서 관리 (1) - 내보내기/가져오기 5.2 인증서 관리 (2) - 개인키를 내보낼 수 있는 유형의 인증서 발급 5.3 인증서 관리 (3) - 인증서 MMC 관리자 사용 6. CRL(Certificate Revocation List) 관리 7. IIS 7 - SSL 사이트 설정하는 방법 8. 서비스를 위한 인증서 설치 9. https 를 이용하여 Single-Sign 시스템 구축 10 ~ [x]. 미정 [부록 1] 인증서 오류 체크 목록 [부록 2] IIS 7에서 클라이언트 측 인증서 사용시 주의점 [부록 3] Vista 와 웹 인증 등록 서비스의 문제 [부록 4] AD CA 에서 Code Signing 인증서 유형 추가 방법 [부록 5] CA 서비스 - 사용자 정의 템플릿 유형 추가 참고 자료: [Microsoft 관련 자료] How IT Works - Certificate Services ; http://www.microsoft.com/technet/technetmag/issues/2006/08/HowITWorks/ The .NET Developer's Guide to Identity ; https://docs.microsoft.com/en-us/previous-versions/windows/server-2003/aa480245(v=msdn.10) "PDB 이야기"도 아직 미처 끝내지 못했는데, 인증서 서비스에 대한 이야기를 또 쓰게 되는 군요. ^^ 5.1 인증서 관리 - 내보내기/가져오기 "4. 사용자 인증서 발급" 글을 읽으시고 직접 실습을 해보신 분들은 자신만의 인증서가 컴퓨터에 설치되었을 텐데요. 여기서 잠깐, 우리가 흔히 하는 "인터넷 뱅킹"을 생각해 보도록 하겠습니다. 흔히들, 인터넷 뱅킹을 하시는 분들은 "회사" 와 "집"에서 모두 할 수 있기를 원합니다. 실제로 그렇게 할 수 있도록 각 은행의 "인증서 관리자"는 여러분들의 인증서를 "내보내기", "가져오기" 할 수 있는 기능을 제공해 주고 있습니다. 그렇다면, "Windows" 환경에서는 그러한 과정을 어떻게 할 수 있을까요? "인증서"는 그 의미만큼이나 꽤나 중요한 자산이므로 매우 신중한 보호가 필요합니다. 하지만, 그렇다고 해서 모든 "인증서"가 보호 대상이 되는 것은 아닙니다. 왜냐 하면 "개인키"가 없는 "공개키"만을 담고 있는 인증서도 있기 때문입니다. 실제로 여러분들의 컴퓨터에 등록된 대부분의 인증서들이 바로 그런 경우입니다. 예를 들어, 아래 화면과 같이 "Personal" 탭을 제외한 다른 탭들, "Other People", "Intermediate Certification Authorities", "Trusted Root Certification Authorities" 에 있는 거의 대부분의 인증서들은 "공개키"만을 담고 있습니다. 반면에, "4. 사용자 인증서 발급"에서 설명한데로 설치된 인증서는 "개인키"를 담고 있는 인증서입니다. 그럼, 어떻게 개인키가 있는지 확인할 수 있을까요? 일단 프로그래밍을 통한 방법을 제외하고는 아래 화면에서와 같이 아무 인증서나 선택하고 "View" 버튼을 눌러 보시면 그에 대한 정보를 보여주기 때문에 바로 알 수 있습니다. [그림 1: 인증서 목록] 예를 들어, 개인키를 담고 있는 인증서는 아래 화면과 같이 분명하게 "You have a private key that corresponds to this certificate." 라고 지정이 되어 있습니다. [개인키를 담고 있는 인증서] 반대로 공개키만을 담고 있다면 아래 화면과 같이 개인키에 대한 언급이 없습니다. [공개키만을 담고 있는 인증서] 한가지 유의하셔야 할 것은, 이와 같이 "개인키"를 담은 인증서가 모두 "개인키와 함께" 내보내기가 가능하지는 않다는 것입니다. 실제로 개인키에 대한 보안을 좀더 높이기 위한 차원에서, 외부로 "내보내기 가능한"(exportable) 유형과 그렇지 못한 유형으로 또 나뉘게 됩니다. 역시 이에 대한 확인 방법도 간단합니다. 위의 [그림 1: 인증서 목록] 에서 "개인키"를 가지고 있는 인증서들 중에서 아무거나 선택한 다음 하단의 "Export..." 버튼을 눌러 봅니다. 만약 해당 인증서가 "개인키를 포함해서 외부로 내보내기 가능한 유형"이라면 아래 화면과 같이 "export the private key" 메뉴가 제공이 됩니다. 만약 해당 인증서가 개인키 내보내기를 지원하지 않도록 설정이 되었다면 다음 화면과 같이 해당 메뉴가 선택가능한 상태로 나오지 않습니다. [인증서 내보내기] 자, 그럼 이제 여러분들이 옮기려는 인증서가 어떤 유형에 속하는지 확인해 보시고, 개인키가 외부로 내보내기 가능한 형태라면 다음의 순서를 따라서 해당 인증서를 복사해 주시면 됩니다. 1. 복사하고자 하는 인증서를 Internet Explorer 의 인증서 관리 화면에서 아래와 같이 선택을 한 후, "Export..." 버튼을 누릅니다. 2. 이제부터 인증서 내보내기 위저드가 뜨게 됩니다. 첫 화면은 그냥 "다음" 버튼을 눌러서 넘어갑니다. 3. "내보내기" 할 인증서에 개인키도 함께 넣을지를 물어봅니다. "Yes, export the private key" 메뉴를 선택하고 "다음" 버튼을 누릅니다. 4. 개인키를 담을 수 있는 포맷인 "PFX" 로만 파일 저장이 가능하므로 다른 포맷들은 모두 선택이 불가능한 상태로 됩니다. 만약 개인키를 "이동"시킬 목적이라면 "Delete the private key if the export is successful" 옵션을 체크해 줍니다. 여기서는 "복사"할 목적이기 때문에 기본으로 설정하고 "다음" 버튼을 누르겠습니다. ("개발 환경 구성: 7. ActiveX 서명 과정 자동화" 과정도 pfx 파일을 이용한 예입니다.) 5. 보안이 다소 허술해지는 "파일"미디어로 저장되는 것이므로, "개인키가 담긴 인증서"를 보호하기 위해 내용을 암호화시키게 됩니다. 이에 사용될 "Key"를 물어보게 되는데, 적절하게 원하는 암호를 입력하고 "다음"을 누릅니다. 6. 저장될 파일 경로를 물어옵니다. 적절한 경로를 입력하고 "다음" 을 누릅니다. 7. 마지막으로, 입력되었던 사항들을 확인합니다. "마침" 버튼을 누르면 지정된 경로의 파일로 "개인키를 담은 인증서"가 내보내 집니다. [가져오기 - PFX 인증서 파일을 대상 컴퓨터에 설치] 이제 여러분들의 하드 디스크에는 "C:\my_secure_cert.pfx" 파일이 생성되었을 것입니다. 이 파일을 여러분들이 원하는 컴퓨터에 복사하고, 바로 그 컴퓨터에서 인증서를 설치해 주시면 됩니다. 구체적인 단계는 다음과 같습니다. 1. 해당 컴퓨터의 탐색기에서 pfx 파일을 두번 클릭하면 다음 화면과 같이 인증서 설치를 위한 위저드가 실행됩니다. "다음" 버튼을 누릅니다. 2. 파일 경로가 미리 지정되어 있으므로 그냥 "다음" 버튼을 눌러 줍니다. 3. 위의 "인증서 내보내기 - 5번" 항목에서 설정했던 그 암호를 입력해 줍니다. 4. 인증서가 위치할 "저장소" 영역을 지정합니다. 그냥 여기서는 자동으로 두고 "다음" 버튼을 누르겠습니다. 5. 마지막으로 입력 사항들을 확인하고 "마침" 버튼을 누르면 해당 인증서가 성공적으로 설치되게 됩니다. Internet Explorer 를 실행시키고 "도구" 메뉴, "인터넷 옵션" 메뉴를 선택한 후, "내용"탭을 누르고 "인증서" 버튼을 누르게 되면 다음 화면과 같이 해당 인증서가 설치된 것을 확인할 수 있습니다. [이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.] [연관 글] 개발 환경 구성: 284. "Let's Encrypt"에서 제공하는 무료 SSL 인증서를 IIS에 적용하는 방법 (1)개발 환경 구성: 74. 인증서 관련(CER, PVK, SPC, PFX) 파일 만드는 방법기타: 20. 인기 순위 정리 : 조회수 250 ~ 499 회 글 목록개발 환경 구성: 23. 비스타 x64 버전에서 서명되지 않은 드라이버 사용.NET Framework: 75.6. CardWriter.csproj 와 함께 알아보는 인증서 식별 방법(이 글의 내용은 재작성되어질 예정입니다.)개발 환경 구성: 18.7. 인증서 관리 (2) - 개인키를 내보낼 수 있는 유형의 인증서 발급개발 환경 구성: 18. 윈도우즈 인증서 서비스 이야기개발 환경 구성: 455. 윈도우에서 (테스트) 인증서 파일 만드는 방법개발 환경 구성: 309. 3년짜리 유효 기간을 제공하는 StartSSL개발 환경 구성: 147. .keystore 파일에 저장된 개인키 추출방법과 인증기관으로부터 온 공개키를 합친 pfx 파일 만드는 방법 [최초 등록일: 11/11/2006 ] [최종 수정일: 8/29/2019 ] 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다. by SeongTae Jeong, mailto:techsharer@outlook.com 비밀번호 댓글 쓴 사람 [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... NoWriterDateCnt.TitleFile(s) 12079정성태12/13/201925오류 유형: 584. 원격 데스크탑(rdp) 환경에서 다중 또는 고용량 파일 복사 시 "Unspecified error" 오류 발생12078정성태12/13/201943Linux: 26. .NET Core 응용 프로그램을 위한 메모리 덤프 방법12077정성태12/13/201921Linux: 25. 자주 실행할 명령어 또는 초기 환경을 "~/.bashrc" 파일에 등록12076정성태12/12/201997디버깅 기술: 142. Linux - lldb 환경에서 sos 확장 명령어를 이용한 닷넷 프로세스 디버깅 - 배포 방법에 따른 차이12075정성태12/12/201982디버깅 기술: 141. Linux - lldb 환경에서 sos 확장 명령어를 이용한 닷넷 프로세스 디버깅12074정성태12/11/201970디버깅 기술: 140. windbg/Visual Studio - 값이 변경된 경우를 위한 정지점(BP) 설정(Data Breakpoint)12073정성태12/10/201975Linux: 24. Linux/C# - 실행 파일이 아닌 스크립트 형식의 명령어를 Process.Start로 실행하는 방법12072정성태12/9/201940오류 유형: 583. iisreset 수행 시 "No such interface supported" 오류12071정성태12/9/201946오류 유형: 582. 리눅스 디스크 공간 부족 및 safemode 부팅 방법12070정성태12/9/201938오류 유형: 581. resize2fs: Bad magic number in super-block while trying to open /dev/.../root12069정성태12/2/2019167디버깅 기술: 139. windbg - x64 덤프 분석 시 메서드의 인자 또는 로컬 변수의 값을 확인하는 방법12068정성태11/28/2019173디버깅 기술: 138. windbg와 Win32 API로 알아보는 Windows Heap 정보 분석 [1]212067정성태11/27/2019159디버깅 기술: 137. 실제 사례를 통해 Debug Diagnostics 도구가 생성한 닷넷 웹 응용 프로그램의 성능 장애 보고서 설명 [1]112066정성태11/27/2019101디버깅 기술: 136. windbg - C# PInvoke 호출 시 마샬링을 담당하는 함수 분석 - OracleCommand.ExecuteReader에서 OpsSql.Prepare2 PInvoke 호출 분석12065정성태11/25/2019113디버깅 기술: 135. windbg - C# PInvoke 호출 시 마샬링을 담당하는 함수 분석112064정성태11/25/201974오류 유형: 580. HTTP Error 500.0/500.33 - ANCM In-Process Handler Load Failure12063정성태11/21/2019109디버깅 기술: 134. windbg - RtlReportCriticalFailure로부터 parameters 정보 찾는 방법12062정성태11/21/2019109디버깅 기술: 133. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례 - 두 번째 이야기12061정성태11/20/2019104Windows: 165. CoTaskMemAlloc/CoTaskMemFree과 윈도우 Heap의 관계12060정성태11/21/2019131디버깅 기술: 132. windbg/Visual Studio - HeapFree x64의 동작 분석12059정성태11/20/2019128디버깅 기술: 131. windbg/Visual Studio - HeapFree x86의 동작 분석12058정성태11/19/2019131디버깅 기술: 130. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례12057정성태11/18/201986오류 유형: 579. Visual Studio - Memory 창에서 유효한 주소 영역임에도 "Unable to evaluate the expression." 오류 출력12056정성태11/18/2019146개발 환경 구성: 464. "Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법112055정성태11/17/2019109개발 환경 구성: 463. Visual Studio의 Ctrl + Alt + M, 1 (Memory 1) 등의 단축키가 동작하지 않는 경우 [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...