Microsoft MVP성태의 닷넷 이야기
Windows: 5. Vista 와 웹 인증 등록 서비스의 문제 [링크 복사], [링크+제목 복사],
조회: 27585
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

현재 Vista에서는 Windows 2003의 "인증서 서비스"의 웹 등록 애플리케이션을 사용할 수가 없습니다. 이미 해보신 분들은 아시겠지만, 아래 화면과 같이 "ActiveX 컨트롤 다운로드 중..." 이라는 메시지만 한없이 기다리게 되는데요.

cert_service_and_vista_1.png

이에 대해 다음과 같은 KB 자료가 11월 27일 자료로 올라와 있습니다.

How to use Certificate Services Web enrollment pages together with Windows Vista
; http://support.microsoft.com/kb/922706/en-us

여기서 잠시 풀이해 보면.

certsrv 웹 애플리케이션에서 제공되는 asp 페이지들은, 클라이언트와의 상호 작용을 대부분 Xenroll이라는 ActiveX 컨트롤을 통해서 하는데, Vista에서는 Xenroll 컨트롤이 설치되어 있지 않기 때문에(Xenroll은 구시대의 유물이기 되어 버렸기 때문에 Vista에는 없어졌음: deprecated) 발생하는 문제라고 합니다.

대신에 Vista에서는 "CertEnroll" COM 개체로 제공이 되어지며, Xenroll은 시스템상에서 막아두었기 때문에 수동으로 직접 등록한다고 해도 실패하게 됩니다.

현재는, 이렇게 "CertEnroll" 컴포넌트와 동작하는 certsrv 웹 애플리케이션은 "Longhorn" 서버에만 구현되어져 있습니다. (Longhorn 서버에 구현된 certsrv 웹 애플리케이션은 기존 "Xenroll"과도 잘 동작한다고 합니다.) 참고로, 위의 문서에서는 Longhorn 베타 3을 언급하고 있지만, MSDN 구독자 다운로드 센터를 통해서 현재(2006-12-06) 공개되어 있는 빌드 5600의 certsrv 웹 애플리케이션도 정상적으로 동작하고 있습니다.

어쨌든, 개선된 CertEnroll로 인해, 서버 측의 asp 페이지를 통해서 동작하던 기능들이 필요없어졌기 때문에 그에 맞춰 제거되었다고 합니다.

현재의 서버 운영체제 버전으로 정리해 보면 다음과 같습니다. (아마도, Windows 2003 SP2의 정식 버전에서는 정상적으로 지원하지 않을까 예상해 봅니다.)

  Windows Server 2003 and Windows Server 2003 SP1 Windows Server 2003 SP2 Windows Server "Longhorn"
Client computers that are earlier than Windows Vista 지원 지원 지원
Windows Vista-based client computers 미지원 미지원 지원

Vista에 대한 certsrv 웹 애플리케이션에 대한 정상적인 서비스를 제공하기 위해서 위의 토픽에서는 현재 베타로 공개된 롱혼 서버로부터 변경된 웹 애플리케이션 소스를 가져올 것을 권하고 있습니다.

근데, 좀 ^^; 무책임한 것 같습니다. 이를 위해서 여러분들은 MSDN 구독자 다운로드 센터로부터 "Longhorn 빌드 5600"을 다운로드해야 합니다. 다운로드 후에 다음 화면과 같이 "서버 역할 구성 마법사"를 이용해서 "Active Directory Certificate Server"를 선택해서 별도로 설치를 해야 합니다.

cert_service_and_vista_2.png

주의해야 할 것은, 인증서 서비스만 설치하시면 안 되고 다음과 같이 "Certificate Authority Web Enrollment"까지 선택해서 설치를 해주셔야 certsrv에 해당하는 웹 애플리케이션이 (아마도) 설치될 것입니다.

cert_service_and_vista_3.png

자, 이렇게 롱혼 서버를 구성하셨으면, 다음과 같은 절차를 통해서 여러분들의 Windows 2003 서버를 업데이트시켜 주시면 Windows Vista에서도 certsrv 웹 애플리케이션을 정상적으로 사용할 수 있게 됩니다.

1. %systemroot%\System32\Certsrv 폴더에서 "Certdat.inc", "Certenroll" 폴더를 제외한 모든 파일/폴더를 삭제합니다.

* 위의 폴더 중에서 "CertControl" 폴더를 삭제하기 위해서는 "Safe mode"로 부팅해야 합니다.

2. "Longhorn" 서버에서 "Certdat.inc" 파일을 제외하고, "CertSrv\EN-US" 폴더의 모든 내용을 Windows 2003의 "%systemroot%\System32\certsrv 폴더에 복사합니다. (Certdat.inc 파일이 같은 폴더에 없기 때문에, 일부러만 덮어쓰지 않으면 됩니다.)

3. Windows 2003의 Certdat.inc 파일을 편집해야 합니다. 우선, 다음과 같은 내용을 찾아서 삭제합니다.

' control versions
sXEnrollVersion="5,131,3686,0"
sScrdEnrlVersion="5,131,3790,1206"
sScrdW2KVersion="5,131,2195,5583"

4. Certsrv 폴더에 있는 모든*.asp 파일을 열어서,

<!-- #include FILE="..\certdat.inc"-->

위의 내용을 아래와 같이 수정해 줍니다.

<!-- #include FILE="certdat.inc"-->

5. Certsgcl.inc 파일을 열어서, WriteTemplateList 함수와 IsUserTemplateAvailable 함수 내부의 다음과 같은 ActiveX 컨트롤 ProgID를 수정해 줍니다.

Set WebEnrlServer=Server.CreateObject("WebEnrlServer.WebEnrlServer.1")
==> Set WebEnrlServer=Server.CreateObject("SCrdEnr.SCrdEnr.1")

6. 마지막으로, Vista 및 Longhorn 기반의 클라이언트 컴퓨터가 인증서 발급 웹 사이트를 이용하기 위해서는 반드시 HTTPS로 접속해야 합니다. 이를 위해, 아예 IIS 서버에서 해당 웹 애플리케이션을 기본적으로 "HTTPS required"로 설정합니다.



그래서, ^^ 현재 제 sysnet 웹 사이트는 롱혼 서버에서 제공되는 웹 애플리케이션을 적용하여 비스타에서도 동작되어지도록 구성된 상태입니다.



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

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/20/2023]

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

비밀번호

댓글 작성자
 



2008-07-14 09시33분
[정엽] 자료가 정리가 잘되어 퍼갑니다. ^^

출저는 명시하겠습니다. ^^
[guest]
2010-02-09 08시31분
[김성호] 좋은 자료 감사합니다. 그런데 한 가지 궁금한게 있습니다. 마지막에 " IIS 서버에서 해당 웹 애플리케이션을 기본적으로 "HTTPS required" 로 설정합니다." 이 부분은 IIS에서 설정을 어떻게 하는 건가요?
IIS를 아무리 뒤져봐도 "HTTPS required"라는 옵션은 없던대요..^^;
[guest]
2010-02-09 08시54분
IIS 7이상의 경우, "Sites" / "Default Web Site" 노드를 클릭하고 오른쪽 패널의 "IIS" 범주에 "SSL Settings"를 선택하면 "Require SSL" 설정화면이 나옵니다.
kevin25
2010-02-10 09시20분
[김성호] 답변 감사드립니다.^^ 염치불구하고 하나 더 질문 드리자면...현재 제가 사용하고 있는 IIS 버전이 6.0 입니다. ^^; 6.0에서는 해당 옵션이 어디에 있나요?
위에 내용들을 적용하기 위해서는 IIS 7.0을 사용해야하나요?
[guest]
2010-02-13 09시58분
해당 웹 사이트의 등록정보 화면에서 "Directory Security" 탭의 "Secure communications" 범주에 "Edit..."버튼을 누르면 "Require secure channel(SSL)"설정을 할 수 있습니다. ^^
kevin25

... 16  17  [18]  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
13198정성태12/18/20224809.NET Framework: 2080. C# - Microsoft.XmlSerializer.Generator 처리 없이 XmlSerializer 생성자를 예외 없이 사용하고 싶다면?파일 다운로드1
13197정성태12/17/20224608.NET Framework: 2079. .NET Core/5+ 환경에서 XmlSerializer 사용 시 System.IO.FileNotFoundException 예외 발생하는 경우파일 다운로드1
13196정성태12/16/20224816.NET Framework: 2078. .NET Core/5+를 위한 SGen(Microsoft.XmlSerializer.Generator) 사용법
13195정성태12/15/20225300개발 환경 구성: 655. docker - bridge 네트워크 모드에서 컨테이너 간 통신 시 --link 옵션 권장 이유
13194정성태12/14/20225409오류 유형: 833. warning C4747: Calling managed 'DllMain': Managed code may not be run under loader lock파일 다운로드1
13193정성태12/14/20225513오류 유형: 832. error C7681: two-phase name lookup is not supported for C++/CLI or C++/CX; use /Zc:twoPhase-
13192정성태12/13/20225569Linux: 55. 리눅스 - bash shell에서 실수 연산
13191정성태12/11/20226470.NET Framework: 2077. C# - 직접 만들어 보는 SynchronizationContext파일 다운로드1
13190정성태12/9/20226959.NET Framework: 2076. C# - SynchronizationContext 기본 사용법파일 다운로드1
13189정성태12/9/20227832오류 유형: 831. Visual Studio - Windows Forms 디자이너의 도구 상자에 컨트롤이 보이지 않는 문제
13188정성태12/9/20226414.NET Framework: 2075. C# - 직접 만들어 보는 TaskScheduler 실습 (SingleThreadTaskScheduler)파일 다운로드1
13187정성태12/8/20226366개발 환경 구성: 654. openssl - CA로부터 인증받은 새로운 인증서를 생성하는 방법 (2)
13186정성태12/6/20224903오류 유형: 831. The framework 'Microsoft.AspNetCore.App', version '...' was not found.
13185정성태12/6/20225874개발 환경 구성: 653. Windows 환경에서의 Hello World x64 어셈블리 예제 (NASM 버전)
13184정성태12/5/20225055개발 환경 구성: 652. ml64.exe와 link.exe x64 실행 환경 구성
13183정성태12/4/20225073오류 유형: 830. MASM + CRT 함수를 사용하는 경우 발생하는 컴파일 오류 정리
13182정성태12/4/20225799Windows: 217. Windows 환경에서의 Hello World x64 어셈블리 예제 (MASM 버전)
13181정성태12/3/20225192Linux: 54. 리눅스/WSL - hello world 어셈블리 코드 x86/x64 (nasm)
13180정성태12/2/20225271.NET Framework: 2074. C# - 스택 메모리에 대한 여유 공간 확인하는 방법파일 다운로드1
13179정성태12/2/20224611Windows: 216. Windows 11 - 22H2 업데이트 이후 Terminal 대신 cmd 창이 뜨는 경우
13178정성태12/1/20225152Windows: 215. Win32 API 금지된 함수 - IsBadXxxPtr 유의 함수들이 안전하지 않은 이유파일 다운로드1
13177정성태11/30/20225839오류 유형: 829. uwsgi 설치 시 fatal error: Python.h: No such file or directory
13176정성태11/29/20224703오류 유형: 828. gunicorn - ModuleNotFoundError: No module named 'flask'
13175정성태11/29/20226543오류 유형: 827. Python - ImportError: cannot import name 'html5lib' from 'pip._vendor'
13174정성태11/28/20224973.NET Framework: 2073. C# - VMMap처럼 스택 메모리의 reserve/guard/commit 상태 출력파일 다운로드1
13173정성태11/27/20225734.NET Framework: 2072. 닷넷 응용 프로그램의 스레드 스택 크기 변경
... 16  17  [18]  19  20  21  22  23  24  25  26  27  28  29  30  ...