[python] PyOpenSSL을 사용하여 SSL 인증서의 유효성 기간을 확인하는 방법은 무엇인가요?
import OpenSSL
import datetime

# 인증서 파일 로드
cert_file = "path/to/certificate.crt"
with open(cert_file, "rb") as file:
    cert_data = file.read()

# OpenSSL X509 객체 생성
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert_data)

# 유효성 기간 확인
not_before = x509.get_notBefore().decode("utf-8")
not_after = x509.get_notAfter().decode("utf-8")

from_date = datetime.datetime.strptime(not_before, "%Y%m%d%H%M%SZ")
to_date = datetime.datetime.strptime(not_after, "%Y%m%d%H%M%SZ")

current_date = datetime.datetime.utcnow()

# 인증서 유효성 기간 비교
if from_date <= current_date <= to_date:
    print("인증서가 유효합니다.")
else:
    print("인증서가 유효하지 않습니다.")

위의 코드는 PyOpenSSL 모듈을 사용하여 SSL 인증서의 유효성 기간을 확인하는 예제입니다. 먼저, cert_file 변수에 확인할 인증서 파일의 경로를 설정해주세요. 그리고 인증서 파일을 바이너리 형태로 읽어와 cert_data 변수에 저장합니다.

다음으로, load_certificate 함수를 사용하여 OpenSSL X509 객체를 생성합니다. 인증서 파일 형식이 .crt인 경우 OpenSSL.crypto.FILETYPE_PEM을 사용하시면 됩니다.

get_notBeforeget_notAfter 함수를 사용하여 인증서의 유효성 기간을 가져옵니다. 반환된 값은 바이트 문자열이므로, decode("utf-8")를 사용하여 문자열로 변환합니다.

유효성 기간은 strptime 함수를 사용하여 datetime 객체로 변환합니다. 이후 utcnow 함수를 사용하여 현재 날짜와 시간을 얻어 옵니다.

마지막으로, 현재 날짜와 인증서의 유효성 기간을 비교하여 유효한지 여부를 출력합니다.

참고 문서: