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);
댓글
댓글 쓰기