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);

댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

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

아두이노(arduino) 심박센서 (heart rate sensor) 심박수 측정 example code

리눅스 디바이스 드라이버 기초와 예제

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