OpenSSL인증서 시간 에러 해결 방법

OpenSSL을 사용하여 서버 연결시 인증서 유효 기간 체크 중 발생하는 에러의 해결 방법에 요약.


#define X509_V_ERR_CERT_NOT_YET_VALID                   9
#define X509_V_ERR_CERT_HAS_EXPIRED                     10


1. 시스템 시간이 실 세계의 시간과 맞지 않아 발생할 수 있다.

  인터넷 시간서버에서 시간 정보를 읽어와 시스템 시간을 동기화 한다. 


2. 시스템 시간을 변경할 수 없는 경우 옵션 파라미터를 설정하여 해결할 수 있다.

#define X509_V_FLAG_USE_CHECK_TIME              0x2
#define X509_V_FLAG_NO_CHECK_TIME               0x200000

void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t);
int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, unsigned long flags);


X509_VERIFY_PARAM_set_time를 사용하여 원하는 시간을 설정하여, 인증서 검사 때 설정된 시간을 사용할 수 있다.

X509_VERIFY_PARAM_set_flags 함수로 X509_V_FLAG_NO_CHECK_TIME flag를 설정하면 인증서 시간 검사를 수행하지 않게 된다. 

위 flag에 의한 인증서 검사 여부 동작에 관한 소스는 OpenSSL x509_vfy.c 파일의 internal_verify() 와  x509_check_cert_time()함수를 참조하면 된다.

아래는 사용 예제 코드이다. 

X509_VERIFY_PARAM *sp = ssl_get0_param(ssl);

X509_verify_param_set_time(sp, time_sec);>
X509_verify_param_set_flag(sp, X509_V_FLAG_NO_CHECK_TIME);

댓글

이 블로그의 인기 게시물

쉽게 설명한 파티클 필터(particle filter) 동작 원리와 예제

python winsound를 이용한 윈도우 환경에서 소리 재생 예제

바로 프로젝트 적용 가능한 FIR Filter (low/high/band pass filter )를 c나 python으로 만들기

base64 인코딩 디코딩 예제 c 소스

Eigen 라이브러리 matrix 사용법