2021/개발

인증서 유효성 검증 방법

mjin.park 2021. 1. 3. 18:23

인증서 유효성 검증 방법에는 크게 CRL, OCSP가 있다.

 

1. CRL: Certificate Revocation List; 인증서 폐기 목록

인증서 발급자(CA)로부터 폐기된 인증서 목록을 의미하며, 폐기된 인증서의 Serial, 폐기 날짜, 폐기 사유 등을 담고 있다.

RFC 3280에 의하면, 영구적인 폐기(Revoked)와 임시적인 폐기(Hold)가 있다.

No. 인증서 폐기 사유 설명
0 unspecified 특별한 폐기 사유가 없음
1 keyCompromise 인증서 소유자의 전자서명키가 손상
2 cACompromise 인증서 발급자의 전자서명키가 손상
3 affiliationChanged 소유자 명칭 또는 기타 정보의 변경
4 superseded 키 손상 없이 인증서를 폐기(인증서만 대체하는 경우)
5 cessationOfOperation 더 이상 지정된 목적으로 인증서를 사용하지 않음
6 certificateHold 인증서 효력 정지
8 removeFromCRL 인증서 효력 정지 및 폐기 목록과 사용
9 privilegeWithdrawn 인증서에 포함된 모든 권한이 취소됨
10 aACompromise 인증서에서 검증된 CA가 손상

CRL은 CRL 배포지점으로부터 주기적으로 다운받아줘야만 한다.

해당 주기가 너무 길면 폐기된 인증서를 사용할 수 있으며, 너무 짧으면 인증서를 사용할 때마다 오버헤드가 증가하게 된다.

 

2. OCSP: Online Certificate Status Protocol; 온라인 인증서 상태 프로토콜

CRL을 주기적으로 갱신해줘야 하는 단점을 보완한 프로토콜이다.

OCSP는 사용자가 서버에 접근을 시도하면 인증서 상태 정보를 실시간으로 요청하여 인증서의 유효성 여부를 즉시 응답해준다.

RFC 6960에 정의되어 있으며, 일반적으로 HTTP로 구성된 서버를 이용한다.

경험상 Apache2는 POST방식의 OCSP Request를 보내며, Nginx는 GET 방식의 OCSP Request를 보낸다.

GET과 POST의 정보 전달 방식이 다르다.

HTTP 방식 OCSP Request 전달 방식
GET URL path로 host 뒤에 붙여져 전달됨
POST Body에 data로 전달됨

이렇게 전달받은 HTTP Header에는 Content-Type으로 application/ocsp-request를 포함하고 있으며, 응답을 보낼 때에는 Content-Type으로 application/ocsp-response를 포함시켜야 한다.

더 자세한 내용은 표준문서를 참조하면 된다.

 

참고자료

1. 한국인터넷진흥원, (2009), 전자서명 인증서 효력정지 및 폐지목록 프로파일 규격

 

반응형

'2021 > 개발' 카테고리의 다른 글

Spring Boot - An illegal reflective access operation has occurred  (0) 2021.04.24
JWT(JSON Web Token)  (0) 2021.02.06
Docker Commands  (0) 2021.01.06
Ubuntu apt-get update 실패  (0) 2021.01.03
CPU 정보 확인하기  (0) 2021.01.03