Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 18.2. 웹 사이트에 SSL을 적용 [링크 복사], [링크+제목 복사]
조회: 32566
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
(연관된 글이 9개 있습니다.)

2. 웹 사이트에 SSL을 적용


Dual Core가 집안의 데스크탑으로까지 들어오고 있는 시대입니다. 세상에나... 그것도 그냥 Dual Core도 아니고 ^^; 64bit Dual Core입니다. 내년에는 Quad-Core까지 발매될 예정이라고 하는데요. 이처럼 점점 더 컴퓨터가 고성능화되면서 차츰 관심을 기울이게 하는 분야갸 있지요? 바로 보안입니다. 예전에는 컴퓨터의 낮은 성능으로 인해 보안까지 신경쓸 여력이 없었지만, 이제는 상황이 바뀌어 가고 있습니다. 무엇보다도 "보안"이 최우선 과제입니다.

웹 사이트에 보안을 적용하는 가장 손쉬운 방법은 - 프로그래머일 필요도 없죠. - SSL (Secure Sockets Layer)를 적용하는 것입니다. 그런데, 중요한 문제가 하나 걸리죠. ^^; 바로 "돈"입니다. 공인된 서버 인증서를 받기 위해서는 "Verisign" 같은 업체의 인증서를 "루트"로 하는 하위 서버 인증서를 받아야 하는데, 이 비용이 일반인 입장에서는 만만치 않습니다. (물론, 대형 포탈이라면 그 정도 비용은 지불해야 할 것입니다.)

사실, "Verisign"으로부터 공인 인증서를 받아야 하는 실질적이면서도 현실적인 이유는 "사용자로 하여금 귀찮게 하지 않는다"라는 면 밖에는 없습니다. 그러한 귀찮음도 어느 정도냐면, "단 한 번의 버튼 클릭" 정도입니다. 따라서, 저 같은 경우처럼 개인적으로 운영하는 웹 사이트라면 그러한 "단 한 번의 버튼 클릭"과 서버 인증서 비용값을 바꿀 수는 없습니다. ^^ 그렇기 때문에 개인적으로 "인증서 서비스"를 돌리는 것을 충분히 고려해 볼 수 있겠습니다.

여러분들의 웹 사이트에 SSL을 적용하기 위해서는 "인증서 서비스"가 있어야 합니다. 이 서비스는 3rd-party로도 구현이 되어 있는 것으로 아는데, Windows Server 시스템이라면 기본적으로 "인증서 서비스"를 제공하고 있으므로 그것을 사용하실 것을 권장합니다. 참고로, 인증서 서비스 설치에 대해서는 "1. 윈도우즈 인증서 서비스 설치"에서 이미 알아봤으므로 생략하고, 이번에는 그렇게 설치한 인증서 서비스로부터 "서버 인증서"를 받아와서 IIS 웹 사이트에 적용하는 것을 설명드리겠습니다.

윈도우즈의 IIS 서버에서 인증서 서비스를 이용하여 SSL 설치를 하는 작업은 크게 4단계로 나눌 수 있습니다.

1. IIS 관리자에서 인증서 서비스로 보낼 "요청 파일" 준비
2. "요청 파일"을 인증서 서비스로 전달
3. 인증서 서비스에서 해당 "요청"을 승인
4. 승인되어 나온 "인증서"를 IIS 관리자에서 웹 사이트에 설치

이제부터, 각각의 단계별로 아래에서 자세히 살펴 보도록 하겠습니다.



환경 설정 가정:
  인증서 서비스가 설치된 컴퓨터 이름 : sedona2
  인증서를 설치해서 SSL 통신을 하려는 웹 사이트가 설치된 컴퓨터 이름 : sedona

1. IIS 관리자에서 인증서 서비스로 보낼 "요청 파일" 준비

1. IIS 관리자를 실행해서 "SSL"을 설치하기 원하는 "웹 사이트"를 선택한 후 "등록 정보" 창을 띄워서 "디렉터리 보안" 탭으로 이동합니다.

디렉터리 보안 설정

2. "Server Certificate..." 버튼을 누르고, 위저드를 시작합니다.

1. SSL 인증서 설치 위저드

3. 인증서 서비스로부터 새로운 서버 인증서를 받아올 것이므로, "Create a new certificate."를 선택합니다.

2. 인증서를 가져올 방식 지정

4. "인증서 요청"을 text 파일로 저장한 후, 그것을 인증서 서버에 전달할 것입니다.

3. 인증서 전달 방식 지정

5. 이름을 원하는 데로 바꿔도 됩니다. 여기서는 그냥 기본값으로 두고 "다음" 버튼을 누르겠습니다.

4. 보안값 설정

6. 원하는 값을 입력하고 "다음" 버튼을 누릅니다. 별로 중요한 사항은 아닙니다.

5. 보안값 설정

7. 자, 바로 여기가 제일 중요한 부분입니다. 여러분들의 웹 사이트에 사용자들이 입력하고 들어올 DNS 명과 일치하는 이름을 이곳에 기입해야 합니다. 만약 여러분들의 웹 사이트를 "http://www.test.com"이라고 웹 브라우저에 입력해서 들어온다면, 아래의 입력 상자에 "www.test.com"이라고 입력해야 합니다. 지금은 일단, 로컬 인트라넷 상황에서 컴퓨터 이름으로 들어온다고 가정하고, 현재의 컴퓨터 이름 (이 경우) "sedona"를 입력하겠습니다.

6. 사이트 접근 주소 명시

8. 여기도 별로 중요한 화면은 아닙니다. 적당한 값을 입력하고 "다음" 버튼을 누릅니다.

7. 지역 정보 설정

9. 위의 8번까지 설정한 것에 해당하는 인증서를 받기 위한 "요청"을 받을 파일을 지정합니다. 그냥 기본값으로 지정하겠습니다.

8. 요청 파일 저장

10. 이후에는 그냥 계속 "다음" 버튼을 눌러서 완료해 주는 것으로 일단 과정 하나는 완료가 됩니다.




2. "요청 파일"을 인증서 서비스로 전달

이제 여러분들의 하드 디스크에는 "C:\certreq.txt" 파일이 있습니다. 만약 여러분들이 "Verisign" 같은 업체에 이 텍스트 파일을 보낸다면 실제로 "서버 인증서"를 받을 수가 있습니다. 물론, 그렇게 하시면 적지않은 비용이 듭니다. ^^;

여기서는, 이미 기존에 여러분들이 "1. 윈도우즈 인증서 서비스 설치" 과정을 통해서 설치한 인증서 서비스에 "certreq.txt" 파일을 전달해서 "서버 인증서"를 받아오는 것으로 실습을 진행하겠습니다. 여기서 "인증서 서비스"는 "sedona2" 컴퓨터에 설치되어 있다는 것으로 가정하겠습니다.

1. 여러분들의 "인증서 서비스"가 설치된 컴퓨터로 IE를 통해서 다음과 같이 네비게이션합니다. 인증서 서비스가 설치된 컴퓨터 이름이 "sedona2"이므로 다음과 같이 입력합니다.

"http://sedona2/certsrv"

2. 그럼 다음과 같은 화면이 나오게 되는데요. 실제로 인증서 요청을 보내기 전에 우선, "Download a CA certificate, certificate chain, or CRL"을 선택해 줍니다.

1. 루트 인증서 설치

3. 주저하지 말고 "install this CA certificate chain." 링크를 누릅니다.

2. 루트 인증서 설치 확인

4. 그렇게 하면, 다음과 같은 내용으로 확인을 묻는 창이 뜨게 됩니다.

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.

"sedona2" 컴퓨터는 제가 설치한 컴퓨터이므로 당연히 신뢰할 수 있는 컴퓨터입니다. 여러분들도 마찬가지이고요. "Yes" 버튼을 눌러줍니다.

5. 한 번 더 다음과 같은 내용의 확인창이 뜹니다.

You are about to install a certificate from a certification authority (CA) claming to represent:

rootca.themost.pe.kr

Windows cannot validate that the certificate is actually from "rootca.themost.pe.kr". 
You should confirm its origin by contacting "rootca.themost.pe.kr". The following number will assist you in this process:

Thumbprint (sha1): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Warning:
If you install this root certificate, Windows will automatically trust any certificate issued by this CA.
Installing a certificate with an unconfirmed thumbprint is a security risk.
If you click "Yes" you acknowledge this risk.

Do you want to install this certificate?

당연히 "Yes"를 눌러줍니다.

6. 그럼, 루트 인증서를 성공적으로 설치했다는 다음의 화면이 나오게 됩니다. 한 가지 반가운 소식이라면, 위의 과정은 딱 한 번만 해주면 됩니다.

3. 루트 인증서 설치 성공

7. 계속해서, 위의 화면에서 다시 오른쪽 상단의 "Home" 링크를 통해서 다시 2번 화면으로 이동합니다. 이번에는 "Request a certificate" 링크를 선택해 줍니다.

4. 요청 전송

8. 아래의 화면에서 "advanced certificate request" 링크를 선택합니다.

5. 인증서 요청

9. IIS 관리자에서 생성해 둔 "certreq.txt" 요청 파일을 전달해야 하기 때문에 두 번째 링크인 "Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file."를 선택합니다.

6. 텍스트 전달 선택

10. 자, 아래의 텍스트 상자에 보시는 것과 같이 "certreq.txt" 파일의 내용을 복사해서 붙여 넣습니다.

7. 마지막 요청 화면

11. 마지막으로 "Submit" 버튼을 눌러주면, 다음과 같이 요청이 "인증서 서비스"로 전달되었다는 화면이 나옵니다. 이때 전달된 요청에 대한 처리 ID는 "2"번임을 알 수 있습니다. (ID 값은 여러분들의 상황에 따라 다르게 나올 수 있습니다.)

8. 요청 처리 완료




3. 인증서 서비스에서 해당 "요청"을 승인

자, 그럼 인증서를 발행하는 서비스 업체에서는 여러분들이 요청한 "certreq.txt" 파일을 처리해 줄 것입니다. 만약 "Verisign"이라면 그 텍스트 파일의 내용과 함께 사업자 등록증 사본까지도 팩스로 보내달라고 요청할 것입니다. 기본적인 자격에 대한 심사를 거친 후, 그들은 "certreq.txt"에 담겨진 내용에 따른 "서버 인증서"를 발행해 줄 것입니다. 현재는 여러분들이 곧 "인증서 서비스"의 담당자이므로, 여러분들이 보낸 요청을 여러분들이 처리해 주시면 되는 것인데요. 음... 이런 걸 두고 혼자서 북치고 장구치고 하는 거죠. ^^

1. 인증서 서비스가 설치된 컴퓨터에 로그인 해서, - 여기서는 'sedona2' 컴퓨터 - "시작" / "관리 도구" / "인증서 서비스" 메뉴를 선택해서 "인증서" MMC 콘솔을 실행하면 다음과 같은 창이 나타납니다.

1. 인증서 관리자 MMC 콘솔 실행

2. 여러분들은 이미 이전 "2. "요청 파일"을 인증서 서비스로 전달" 단계에서 "certreq.txt" 파일을 전달한 후, 요청에 대한 처리 ID인 "2"번을 받았다는 것을 기억하실 텐데요. 실제로 아래와 같이 "Pending Requests" 노드를 클릭하면 "Request ID"가 2번에 해당하는 인증서 요청이 있음을 확인할 수 있습니다. 이제 이것을 오른쪽 마우스 버튼 메뉴를 이용해서 발행(Issue)해 줍니다.

2. 보류 중인 인증서 발생

3. 그렇게 되면, 보류 중이었던 인증서는 곧바로 발행되어지고, 아래와 같이 "Issued Certificates" 영역으로 이동하게 됩니다. 이제, 여러분들은 인증서 요청을 했던 당사자에게 인증서가 발행이 되었으니 사용하라고 메일과 같은 수단을 이용해서 알려주시면 됩니다. (지금의 상황에서는 여러분들이 알고 있는 것으로 끝나지만.)

3. 발행된 인증서 확인




4. 승인되어 발행된 "인증서"를 IIS 관리자에서 웹 사이트에 설치

자, 이제 마지막 단계입니다. 여러분들이 보낸 "certreq.txt" 파일은 인증서 발행 기관에 의해서 처리되었으며 여러분들은 그 사실을 통보 받았습니다. 남은 작업은, 발행된 인증서를 받아서 웹 사이트에 설치하는 것입니다.

1. 발행된 인증서를 다운로드 받기 위해 "http://sedona2/certsrv"에 방문합니다. 이번에는 "View the status of a pending certificate request" 메뉴를 선택합니다.

인증서 관리 웹 화면

2. 여러분들이 보냈던 인증서 요청 기록이 남아 있습니다. 링크를 클릭합니다.

요청 기록

3. 오... 여러분들의 인증서가 처리되었으니, 다운로드 받을 수 있도록 "링크"가 제공되고 있습니다. IIS에서는 모두 처리할 수 있으므로 "DER" 포맷이든 "Base64" 포맷이든 상관없습니다. 링크를 눌러줍니다.

발행된 인증서

4. 그렇게 되면 다운로드 창이 뜨게 되고, 파일을 저장할 위치를 물어옵니다. 여기서는 해당 파일을 "C:\certnew.p7b"에 저장한 걸로 가정하겠습니다.

5. IIS 관리자를 실행시키고, 최초에 인증서를 요청했던 웹 사이트의 등록 정보 창에서 "Directory Security" 탭을 누른 후, "Server Certifiate..." 버튼을 눌러 줍니다.

6. 위저드 화면이 뜨게 되고, 다음 버튼을 누르면 아래와 같이 묻는 창이 나옵니다. 이전에 요청했던 대로 받은 인증서를 설치할 것이므로 "Process the pending request and install the certificate"를 선택하고 "다음" 버튼을 누릅니다.

인증서 설치 단계 선택

7. 위의 "4번" 단계에서 "c:\certnew.p7b"라고 저장했으므로, 그 파일을 선택해 줍니다.

인증서 선택

8. 포트는 원하는 것을 선택합니다. 기본적으로 포트 명시를 하지 않고 사용자에게 접근하도록 하려면 HTTPS의 기본 포트인 443을 그대로 놓고 "다음" 버튼을 누릅니다.

포트 선택



이로써, 모든 과정이 완료되었습니다. 이제 여러분들은 "https://sedona/"와 같은 경로를 통해서 여러분들의 웹 사이트의 통신 내용을 통째로 암호화해서 클라이언트와 주고 받을 수 있습니다.



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

[연관 글]






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

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

비밀번호

댓글 작성자
 



2013-05-23 09시28분
[김영대] 개념없이 엉뚱한 질문드립니다. 죄송합니다.

sedona2 와 sedona는 한 서버에서 운영하게 되면 문제가 있을까요 (인증서서버와 IIS 서버는 같은 서버로 )

실제 테스트 환경에 구성이 좀 어려워서 그렇습니다.

해보지도 않고 여쭤봐서 죄송합니다 (__)
[guest]
2013-05-23 01시37분
문제없습니다. 마치 웹 서버와 DB 서버를 분리하는 것과 같은 식일 뿐이니까요. ^^
정성태
2015-10-21 04시53분
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13605정성태4/23/2024201닷넷: 2246. C# - Python.NET을 이용한 파이썬 소스코드 연동파일 다운로드1
13604정성태4/22/2024224오류 유형: 901. Visual Studio - Unable to set the next statement. Set next statement cannot be used in '[Exception]' call stack frames.
13603정성태4/21/2024302닷넷: 2245. C# - IronPython을 이용한 파이썬 소스코드 연동파일 다운로드1
13602정성태4/20/2024655닷넷: 2244. C# - PCM 오디오 데이터를 연속(Streaming) 재생 (Windows Multimedia)파일 다운로드1
13601정성태4/19/2024748닷넷: 2243. C# - PCM 사운드 재생(NAudio)파일 다운로드1
13600정성태4/18/2024759닷넷: 2242. C# - 관리 스레드와 비관리 스레드
13599정성태4/17/2024803닷넷: 2241. C# - WAV 파일의 PCM 사운드 재생(Windows Multimedia)파일 다운로드1
13598정성태4/16/2024832닷넷: 2240. C# - WAV 파일 포맷 + LIST 헤더파일 다운로드2
13597정성태4/15/2024801닷넷: 2239. C# - WAV 파일의 PCM 데이터 생성 및 출력파일 다운로드1
13596정성태4/14/20241036닷넷: 2238. C# - WAV 기본 파일 포맷파일 다운로드1
13595정성태4/13/20241047닷넷: 2237. C# - Audio 장치 열기 (Windows Multimedia, NAudio)파일 다운로드1
13594정성태4/12/20241064닷넷: 2236. C# - Audio 장치 열람 (Windows Multimedia, NAudio)파일 다운로드1
13593정성태4/8/20241074닷넷: 2235. MSBuild - AccelerateBuildsInVisualStudio 옵션
13592정성태4/2/20241215C/C++: 165. CLion으로 만든 Rust Win32 DLL을 C#과 연동
13591정성태4/2/20241187닷넷: 2234. C# - WPF 응용 프로그램에 Blazor App 통합파일 다운로드1
13590정성태3/31/20241078Linux: 70. Python - uwsgi 응용 프로그램이 k8s 환경에서 OOM 발생하는 문제
13589정성태3/29/20241150닷넷: 2233. C# - 프로세스 CPU 사용량을 나타내는 성능 카운터와 Win32 API파일 다운로드1
13588정성태3/28/20241247닷넷: 2232. C# - Unity + 닷넷 App(WinForms/WPF) 간의 Named Pipe 통신 [2]파일 다운로드1
13587정성태3/27/20241168오류 유형: 900. Windows Update 오류 - 8024402C, 80070643
13586정성태3/27/20241320Windows: 263. Windows - 복구 파티션(Recovery Partition) 용량을 늘리는 방법
13585정성태3/26/20241104Windows: 262. PerformanceCounter의 InstanceName에 pid를 추가한 "Process V2"
13584정성태3/26/20241058개발 환경 구성: 708. Unity3D - C# Windows Forms / WPF Application에 통합하는 방법파일 다운로드1
13583정성태3/25/20241175Windows: 261. CPU Utilization이 100% 넘는 경우를 성능 카운터로 확인하는 방법
13582정성태3/19/20241433Windows: 260. CPU 사용률을 나타내는 2가지 수치 - 사용량(Usage)과 활용률(Utilization)파일 다운로드1
13581정성태3/18/20241606개발 환경 구성: 707. 빌드한 Unity3D 프로그램을 C++ Windows Application에 통합하는 방법
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...