Microsoft MVP성태의 닷넷 이야기
웹: 5. IIS 7에서 클라이언트 측 인증서 사용 시 주의점 [링크 복사], [링크+제목 복사],
조회: 27818
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 5개 있습니다.)

클라이언트 측 SSL 인증서를 사용하는 웹 사이트가 얼마나 될지는 모르겠지만, 그래도 제가 겪은 시행착오를 하나 공유합니다.

저 같은 경우, 클라이언트 측 인증서를 이용하도록 구성해 놓은 일부 웹 페이지가 있습니다. 그러한 페이지들은 다음과 같이 반드시 클라이언트 측 인증서를 필요로 하도록 설정되어 있습니다.

ie7_revoke_error_403_2.png

이렇게 구성된 웹 사이트의 경우, IIS 7로 마이그레이션 한 이후 다음과 같은 오류 현상을 겪을 수 있습니다.

ie7_revoke_error_403_1.png

"
HTTP Error 403 - Forbidden: Access is denied.
Description: You do not have permission to view this directory or page 
using the credentials that you supplied.
"

좀 더 자세한 오류를 보기 위해서, IIS 7이 설치된 머신에서 직접 "https://localhost:443/test.aspx" URL을 입력하고 들어가면, 다음의 링크에 걸린 오류 화면을 볼 수 있습니다.

"자세한 오류 메시지 보기"

이번엔 좀 더 자세하게 다음과 같은 오류 로그를 포함하는 것을 알 수 있습니다.

"
Your client certificate was revoked, or the revocation status could not be determined.
"

그렇습니다. 문제의 원인은 클라이언트 측에서 제출한 인증서의 CRL 목록을 해당 경로에서 구할 수 없을 때, IIS 7 서버에서는 그 인증서에 대한 유효성 검사를 실패하여 그와 같은 오류 화면을 보내주는 것입니다.

이런 경우, 여러분들이 제출하는 클라이언트 측 인증서를 확인해서 아래와 같이 "CRL Distribution Points"의 URL로부터 실제로 CRL 파일을 다운로드할 수 있는지 검증해야 합니다.

ie7_revoke_error_403_3.png


만약, 이미 발행된 모든 클라이언트 인증서에 기재된 URL이 올바르지 않게 구성되어 있다면 다음과 같은 3가지 방법을 이용해서 이를 수정할 수 있습니다.

- 방법 1. 인증서 서비스의 CRL 배포 지점을 수정하고, 다시 모든 클라이언트로 하여금 인증서를 재발급 받도록 합니다. CRL 배포 지점을 수정하는 방법에 대해서는 다음의 토픽을 참고하십시오.

6. CRL(Certificate Revocation List) 관리
; https://www.sysnet.pe.kr/2/0/414

- 방법 2. 이미 발급된 클라이언트들에 대해서는 해당 PC의 HOSTS 파일을 적절하게 수정해 줍니다.

- 방법 3. 저도 아직 방법을 알지 못하고 있지만, IIS 7의 CRL 확인 옵션을 해제합니다. (아마 있거나, 정식 롱혼 서버 릴리즈에서는 있을 것 같습니다.)



이 외에, CRL 배포 지점이 잘못되는 것으로 인해 발생할 수 있는 문제점이라면 IE 7에서의 SSL 사이트 방문이 상당히 느려지는 현상을 경험할 수 있습니다. 이것은, IE 7이 기본적으로 해당 SSL 인증서의 CRL 파일을 확인하도록 설정되어 있는 것에서 나타나는 문제입니다. 다음 화면과 같이 "서버 인증서 해지 확인" 옵션이 제공되고 있으며, 이로 인해 HTTP 트래픽이 한 번 더 발생하게 됩니다. 만약 이 과정에서 해당 CRL 파일을 다운로드할 수 없으면 SSL 사이트 방문이 눈에 띄게 느립니다.

ie7_revoke_error_403_4.png




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

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/10/2021]

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

비밀번호

댓글 작성자
 



2009-02-12 06시20분
[mcse99@dreamwiz.com] 인증서를 이용한 사용자 인증에 관한 자료를 찾다가 여기까지 왔습니다. 제 생각에는 클라이언트 인증서를 필요로 한다는 것은 클라이언트 컴퓨터에 대한 인증일 수도 있겠지만 클라이언트 사용자에 대한 인증이 더 필요한게 아닌가 합니다.

상용 솔루션(PKI기반 SSO)이 아니고 기본 기능만으로 인증서를 이용해서 사용자인증이 가능하지가 궁금한 부분입니다.(일종의 SSO라고 보아야 하겠죠.) 물론 다대일 매핑을 생성함에 있어서 손이 갈 수 밖에 없겠지만 이론적으로 가능한지가 궁금하네요.(2008에는 이 설정을 할 수 있는 UI자체가 없는지라 2003을 확인하였는데 이론적으로는 가능한 것으로 보여집니다.)
[guest]
2009-02-12 09시10분
IIS 7 Walkthrough: One to One Client Certificate Mapping Configuration
; http://blogs.iis.net/rlucero/archive/2008/05/23/iis-7-walkthrough-one-to-one-client-certificate-mapping-configuration.aspx

말씀하신 다대일 매핑이라는 것이, 여러 개의 인증서를 하나의 사용자 인증으로 매핑시킨다는 거라면, IIS 6에서도 지원했으니 IIS 7에서는 위의 방법을 이용해서 기본적으로 지원이 됩니다.
kevin25

... 16  17  18  19  20  21  22  23  24  25  26  27  [28]  29  30  ...
NoWriterDateCnt.TitleFile(s)
12950정성태2/1/20226723.NET Framework: 1146. .NET 6에 추가되지 않은 Generic Math (예: INumber<T>)
12949정성태2/1/20226573.NET Framework: 1145. C# - ffmpeg(FFmpeg.AutoGen) - Codec 정보 열람 및 사용 준비파일 다운로드1
12948정성태1/30/20226712.NET Framework: 1144. C# - ffmpeg(FFmpeg.AutoGen) AVFormatContext를 이용해 ffprobe처럼 정보 출력파일 다운로드1
12947정성태1/30/20227886개발 환경 구성: 634. ffmpeg.exe - 기존 동영상 컨테이너에 다중 스트림을 추가하는 방법
12946정성태1/28/20226372오류 유형: 792. .NET Core - 로컬 개발 중에 docker 호스팅으로 바꾸는 경우 SQL 서버 접근 방법
12945정성태1/28/20226683오류 유형: 791. SQL 서버 로그인 시 localhost는 되고, 127.0.0.1로는 안 되는 문제
12944정성태1/28/20229138.NET Framework: 1143. C# - Entity Framework Core 6 개요
12943정성태1/27/20227951.NET Framework: 1142. .NET 5+로 포팅 시 플랫폼 호환성 경고 메시지(SYSLIB0006, SYSLIB0011, CA1416)파일 다운로드1
12942정성태1/27/20228210.NET Framework: 1141. XmlSerializer와 Dictionary 타입파일 다운로드1
12941정성태1/26/20229637오류 유형: 790. AKS/k8s - pod 상태가 Pending으로 지속되는 경우
12940정성태1/26/20226957오류 유형: 789. AKS에서 hpa에 따른 autoscale 기능이 동작하지 않는다면?
12939정성태1/25/20227727.NET Framework: 1140. C# - ffmpeg(FFmpeg.AutoGen)를 이용해 MP3 오디오 파일 인코딩/디코딩하는 예제파일 다운로드1
12938정성태1/24/202210074개발 환경 구성: 633. Docker Desktop + k8s 환경에서 local 이미지를 사용하는 방법
12937정성태1/24/20227913.NET Framework: 1139. C# - ffmpeg(FFmpeg.AutoGen)를 이용해 오디오(mp2) 인코딩하는 예제(encode_audio.c) [2]파일 다운로드1
12936정성태1/22/20227855.NET Framework: 1138. C# - ffmpeg(FFmpeg.AutoGen)를 이용해 멀티미디어 파일의 메타데이터를 보여주는 예제(metadata.c)파일 다운로드1
12935정성태1/22/20228072.NET Framework: 1137. ffmpeg의 파일 해시 예제(ffhash.c)를 C#으로 포팅파일 다운로드1
12934정성태1/22/20227653오류 유형: 788. Warning C6262 Function uses '65564' bytes of stack: exceeds /analyze:stacksize '16384'. Consider moving some data to heap. [2]
12933정성태1/21/20228148.NET Framework: 1136. C# - ffmpeg(FFmpeg.AutoGen)를 이용해 MP2 오디오 파일 디코딩 예제(decode_audio.c)파일 다운로드1
12932정성태1/20/20228611.NET Framework: 1135. C# - ffmpeg(FFmpeg.AutoGen)로 하드웨어 가속기를 이용한 비디오 디코딩 예제(hw_decode.c) [2]파일 다운로드1
12931정성태1/20/20226626개발 환경 구성: 632. ASP.NET Core 프로젝트를 AKS/k8s에 올리는 과정
12930정성태1/19/20227385개발 환경 구성: 631. AKS/k8s의 Volume에 파일 복사하는 방법
12929정성태1/19/20227186개발 환경 구성: 630. AKS/k8s의 Pod에 Volume 연결하는 방법
12928정성태1/18/20227272개발 환경 구성: 629. AKS/Kubernetes에서 호스팅 중인 pod에 shell(/bin/bash)로 진입하는 방법
12927정성태1/18/20227033개발 환경 구성: 628. AKS 환경에 응용 프로그램 배포 방법
12926정성태1/17/20227584오류 유형: 787. AKS - pod 배포 시 ErrImagePull/ImagePullBackOff 오류
12925정성태1/17/20227604개발 환경 구성: 627. AKS의 준비 단계 - ACR(Azure Container Registry)에 docker 이미지 배포
... 16  17  18  19  20  21  22  23  24  25  26  27  [28]  29  30  ...