Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 18.11. 서비스를 위한 인증서 설치 [링크 복사], [링크+제목 복사],
조회: 32597
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
(연관된 글이 7개 있습니다.)

8. 서비스를 위한 인증서 설치


사실, 서비스를 위한 인증서를 받는 것은 IIS 6/IIS 7의 인증서 요청 마법사를 이용하는 것과 다른 것이 없습니다. 그렇죠? IIS 6/IIS 7 역시 하나의 NT 서비스이기 때문입니다. 즉, 아래와 같은 토픽 2개는 달리 말하면 서비스를 위한 인증서를 받아서 설치하는 것이라고 볼 수 있습니다.

웹 사이트에 SSL을 적용
; https://www.sysnet.pe.kr/2/0/372

IIS 7 - SSL 사이트 설정하는 방법
; https://www.sysnet.pe.kr/2/0/428

하지만, 직접 인증 기관에 요청을 전달하고 받는 과정을 해봄으로써 좀 더 인증서 관리에 대한 이해를 높일 수 있기 때문에 여기서는 "개발 환경 구성: 18.4. 사용자 인증서 발급"에서 설명한 것처럼 서버 인증서도 마법사를 이용하지 않고 직접 받아보는 과정을 설명해 보겠습니다.

또한 여기서는, 새로운 플랫폼에 적응하는 의미에서 서버는 "롱혼 서버"로 하고, 클라이언트는 "윈도우 비스타"로 했습니다. 구체적인 환경 설정은 다음과 같습니다.

환경 설정 가정:
  운영체제 : 롱혼 서버 (빌드 5600)
  인증서 서비스 : 롱혼 서버에서 제공되는 기본 "Certification Authority"
  인증서 서비스가 설치된 컴퓨터 DNS: www.sysnet.pe.kr
  SSL 인증서를 적용할 웹 사이트의 컴퓨터 이름 : sedona

참고로, 롱혼 서버에서의 인증 기관 서비스 설치는 다음의 토픽을 참고하십시오.

Vista와 웹 인증 등록 서비스의 문제 
; https://www.sysnet.pe.kr/2/0/403




[단계 1: 서버 인증서 요청]

1. "https://[실습 롱혼 서버]/certsrv" 사이트를 방문합니다. 그럼 아래와 같은 화면이 나오게 됩니다. 여기에서 "Request a certificate" 메뉴를 선택합니다.

server_cert_req_1.png

2. 아래와 같이 인증서 종류를 선택하는 화면에서 "advanced certificate request"를 선택합니다.

server_cert_req_2.png

3. 준비된 certreq.txt와 같은 파일이 없기 때문에, "Create and submit a request to this CA" 링크를 선택합니다.

server_cert_req_3.png

4. 아래와 같은 인증서 요청 설정에서, 여기서는 3가지 값을 변경시키도록 하겠습니다.

  Name : sedona (SSL 인증서가 적용될 웹 사이트의 접근 주소)
  Type of Certificate Needed : Server Authentication Certificate
  Key Options: Mark keys as exportable (설정)

server_cert_req_4.png

"Submit" 버튼을 누르면 다음과 같은 질문을 받게 됩니다.

"
This Web site is requesting a new certificate on your behalf.
You should allow only trusted Web sites to request a certificate for you.
-
Do you want to request a certificate now?
"

"Yes" 버튼을 누릅니다.

참고로, 이 부분에서 롱혼 서버의 웹 인증 요청 서비스에 대해 기존 Windows 2003에서 제공되던 것과 다른 점이 몇가지 있습니다. 그중에서도 눈에 띄는 것이 "Store certificate in the local computer certificate store"라는 옵션이 제거되어 있다는 것인데요. 이로 인해서 서버 인증서의 경우에 나중에 다소 복잡한 절차를 거쳐서 해당 인증서를 "Local Computer" 영역으로 이동시켜 줘야 합니다. 이것은 "[단계 4]"에서 좀 더 자세히 알아보겠습니다.

5. 잠깐의 시간이 흐른 다음 아래 화면과 같은 응답을 받을 수 있습니다. 중요한 것은 요청 ID 값이 "77"번이라는 것입니다.

server_cert_req_5.png




[단계 2: 요청된 인증서 발급]

위와 같은 과정을 거쳐서 SSL 인증서에 대한 요청을 보낼 수 있습니다. 이렇게 요청은 보냈지만, 승인할 수 있는 것은 "관리자"의 몫입니다. "18.2. 웹 사이트에 SSL을 적용"을 읽어 보신 분들은 그 방법을 아실 텐데요. 생각이 안 나시는 분들은 다음을 읽어보시면 됩니다.

인증서 서비스에서 해당 "요청"을 승인
; https://www.sysnet.pe.kr/2/0/372#process_a_request




[단계 3: 발급된 SSL 인증서 다운로드]

1. "https://[실습 롱혼 서버]/certsrv" 사이트를 방문합니다. 이번에는 "View the status of a pending certificate request" 메뉴를 선택합니다.

2. 그럼, 아래와 같이 요청에 대한 처리 결과 목록을 보여줍니다. 해당 링크를 선택합니다.

server_cert_req_6.png

3. 관리자가 여러분들의 요청을 수락한 경우에만 아래와 같은 화면이 보이게 됩니다.

server_cert_req_7.png

"Install this certificate" 링크를 누르면 다음과 같이 묻는 창이 뜨게 됩니다.

This Web site is adding one or more certificates to this computer.
Allowing an untrusted Web site to update your certificates is a security risk.
The Web site could install certificates you do not trust, which could allow programs
that you do not trust to run on this computer and gain access to your data.

Do you want this program to add the certificates now?
Click Yes if you trust this Web site. Otherwise, click No.

"Yes"를 선택합니다.




[단계 4: 설치된 SSL 인증서를 서비스(예를 들어, IIS)에서 사용할 수 있도록 설정]

여기서부터의 이야기는, 여러분들이 기본적으로 다음의 토픽을 읽었다고 가정합니다. (그리고, 실제로 아래의 토픽에서 설명한 대로 인증서를 보기 위한 MMC 관리자 구성을 하시길 바랍니다.)

인증서 관리 - 인증서 MMC 관리자
; https://www.sysnet.pe.kr/2/0/395

자, 그럼 이야기를 다시 진행해 볼까요? ^^ 위에서 여러분들은 SSL 인증서를 성공적으로 발급 받아서 설치할 수가 있었을 것입니다. 하지만, 여기서 문제가 있지요. "인증서 관리 - 인증서 MMC 관리자"의 내용을 정독하신 분이라면 쉽게 그 문제를 파악하실 수 있을 텐데요.

바로, 여러분들이 위에서 설치한 SSL 인증서가 "Certificates - CurrentUser" 영역에 등록되어 있다는 사실입니다.

server_cert_req_8.png

"인증서 관리 - 인증서 MMC 관리자"에서 설명드린 대로, "Certificates - CurrentUser"에 등록되어 있다면 일반적인 웹 애플리케이션의 구동 계정인 ASPNET, SYSTEM 등의 계정으로는 해당 인증서를 접근할 수 없기 때문에 당연히 서비스 기능이 정상적으로 동작하지 않게 됩니다.

따라서, 여러분들은 (여기서는 예제로 든) "sedona" 인증서를 "Certificates (Local Computer)"의 Personal 영역에 이동(또는 복사)해야 합니다. 그런데, 이 과정에서 MMC 관리자를 통해서 단순히 해당 인증서를 Local Computer 영역으로 Drag & Drop 하는 식으로 해서는 안됩니다. 왜냐하면, 이미 인증서가 "[단계 3]"의 3번째 과정에서 설치한 순간부터 현재 로그인한 사용자(CurrentUser)의 전용 폴더에 위치하고 있기 때문입니다. 이로 인해, 다소 불편하지만 "Current User\Personal\Certificates"에 있는 인증서를 오른쪽 버튼으로 눌러서 나오는 메뉴의 내보내기(Export) 메뉴를 선택해서 해당 인증서를 pfx 파일로 저장시킨 후, 그것을 다시 "Local Computer\Personal\Certificates" 영역에서 가져오기(import)를 해야 합니다. (이것 때문에, "[단계 1]"에서 "Mark keys as exportable" 옵션을 설정한 것입니다.)




[단계 5: 인증서 설치 확인]

자, 그럼 정상적으로 인증서가 설치되었는지 한번 확인해 볼까요? ^^ 우선, 여러분들의 인증서는 다음과 같이 "Local Computer\Personal\Certificates" 영역에 위치해 있어야 합니다.

server_cert_req_9.png

그리고, 실제로 해당 인증서 파일이 서비스 계정에서 접근할 수 있는 영역에 있는지 확인해 봐야 합니다. 이를 위해서는 "findprivatekey.exe"라는 실행파일이 필요합니다. 이 파일은 다음의 사이트에서 구할 수 있습니다.

Introduction to Information Cards and Internet Explorer 7.0 (in C#)
; http://cardspace.netfx3.com/files/folders/samples_rc_1/entry6000.aspx

위의 사이트에서 "Introduction to CardSpace with Internet Explorer 7.0.zip" 파일을 다운로드한 후 압축을 해제하면 "bin" 폴더에 "findprivatekey.exe" 파일이 있습니다.

자, 이제 다음과 같이 명령어 창에서 실행해 봅니다.

D:\tempWinFX\Cardspace\bin>findprivatekey.exe MY LocalMachine -n "CN=sedona"

Private key directory:
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
Private key file name:
7a171f28ae265f27801c5ca46b856140_668a234e-63ee-4437-be2a-214db24f6cb5

"CN=sedona" 값은 여러분들의 인증서 CN 값을 주어야 합니다. 위의 출력에서 꼭 확인해 봐야 할 값은 "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"입니다. 만약 이 경로가 사용자 계정과 연관된 경로라면 인증서를 잘못 설치하신 것입니다.



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

[연관 글]






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

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

비밀번호

댓글 작성자
 




... 136  137  [138]  139  140  141  142  143  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1639정성태2/23/201423283기타: 41. BBS 스토어 앱 개인정보 보호 정책 안내
1638정성태2/18/201446107Windows: 90. 실행 파일로부터 관리자 요구 권한을 제거하는 방법(부제: 크랙 버전을 보다 안전하게 실행하는 방법) [8]
1637정성태2/14/201426979Windows: 89. 컴퓨터를 껐는데도 어느 순간 자동으로 켜진다면? - 두 번째 이야기
1636정성태2/14/201423033Windows: 88. Hyper-V가 설치된 컴퓨터의 윈도우 백업 설정
1635정성태2/14/201423881오류 유형: 221. SharePoint - System.InvalidOperationException: The farm is unavailable.
1634정성태2/14/201424072.NET Framework: 424. C# - CSharpCodeProvider로 컴파일한 메서드의 실행이 일반 메서드보다 더 빠르다? [1]파일 다운로드1
1633정성태2/13/201426908오류 유형: 220. 2014년 2월 13일 이후로 Visual Studio 2010 Macro가 동작하지 않는다면? [3]
1632정성태2/12/201444909.NET Framework: 423. C#에서 DirectShow를 이용한 미디어 재생 [2]파일 다운로드1
1631정성태2/11/201423658개발 환경 구성: 217. Realtek 사운드 장치에서 재생되는 오디오를 GraphEditor로 녹음하는 방법
1630정성태2/5/201424136개발 환경 구성: 216. Hyper-V에 올려진 윈도우 XP VM에서 24bit 컬러 및 ClearType 활성화하는 방법
1629정성태2/5/201433912개발 환경 구성: 215. DOS batch - 하나의 .bat 파일에서 다중 .bat 파일을 (비동기로) 실행하는 방법 [1]
1628정성태2/4/201435309Windows: 87. 윈도우 8.1에서 .NET 3.5 설치가 안된다면? [2]
1627정성태2/4/201430354개발 환경 구성: 214. SQL Server Reporting Services를 이용해 간단한 리포트 제작하는 방법
1626정성태2/4/201422365Windows: 86. 윈도우 8.1의 Skydrive 내용이 동기화가 안된다면?
1625정성태2/2/201429440.NET Framework: 422. C++과 C#의 Event 공유파일 다운로드1
1624정성태2/2/201425130.NET Framework: 421. ASP.NET에서 Server.CreateObject와 COM Interop 클래스 생성의 차이점
1623정성태2/1/201429875개발 환경 구성: 213. x86/x64별로 나뉘어진 어셈블리를 한 프로젝트에서 참조하는 방법 [1]파일 다운로드1
1622정성태1/31/201430204VC++: 74. 어떤 것을 쓰면 좋을까요? wvnsprintf, _vsnwprintf_s, StringCbVPrintfW [4]
1621정성태1/31/201422019.NET Framework: 420. 베트남의 11학년(한국의 고2)이 45분만에 푼다는 알고리즘 문제파일 다운로드1
1620정성태1/30/201432091.NET Framework: 419. C# - BigDecimal파일 다운로드1
1619정성태1/30/201428785VS.NET IDE: 85. T4를 이용한 INotifyPropertyChanged 코드 자동 생성파일 다운로드1
1618정성태1/29/201444384Linux: 2. 우분투에서 Active Directory 계정을 이용한 파일 공유
1617정성태1/29/201425681.NET Framework: 418. Thread.Abort 호출의 hang 현상 [1]
1616정성태1/29/201426259디버깅 기술: 63. windbg 디버깅 사례: AppDomain 간의 static 변수 사용으로 인한 crash
1615정성태1/29/201428069.NET Framework: 417. WPF WebBrowser 컨트롤에서 SHDocVw.IWebBrowser2 인터페이스를 구하는 방법 및 순수 WPF 웹 브라우저 컨트롤 소개
1614정성태1/29/201425110.NET Framework: 416. System.Net.Sockets.NetworkStream이 Thread-safe할까?파일 다운로드1
... 136  137  [138]  139  140  141  142  143  144  145  146  147  148  149  150  ...