[python] Fabric으로 원격 서버 인증서 만료일 확인하기

보안은 모든 웹 서버 운영자에게 중요한 요소입니다. 하지만 종종 SSL/TLS 인증서의 만료일을 간과하는 경우가 있습니다.

이 문제를 해결하기 위해 Python의 Fabric 라이브러리를 사용하여 원격 서버의 SSL/TLS 인증서 만료일을 확인하는 방법을 알아보겠습니다.

필요한 패키지 설치하기

먼저 Fabric 패키지를 설치해야 합니다. 아래와 같이 명령어를 실행하여 설치하세요.

pip install fabric

코드 작성하기

다음은 Fabric을 사용하여 원격 서버의 인증서 만료일을 확인하는 코드입니다.

from fabric import Connection
import ssl

def check_certificate_expiration_date(host, username, key_path):
    with Connection(host, user=username, connect_kwargs={'key_filename': key_path}) as conn:
        with conn.sudo():
            cert = ssl.get_server_certificate((host, 443))
            x509 = ssl.PEM_cert_to_X509(cert)
            expiration_date = x509.get_notAfter()

    return expiration_date

# 실행 예시
expiration_date = check_certificate_expiration_date('example.com', 'ubuntu', '~/.ssh/my_key.pem')
print(f"The certificate expiration date is: {expiration_date}")

코드 설명

  1. fabric 모듈 및 ssl 모듈을 import 합니다.
  2. check_certificate_expiration_date 함수를 정의하고, 원격 서버의 호스트, 사용자 이름, 키 경로를 매개변수로 받습니다.
  3. fabricConnection 객체를 사용하여 원격 서버에 연결합니다.
  4. ssl 모듈의 get_server_certificate 함수를 사용하여 호스트와 포트 443을 통해 서버의 인증서를 가져옵니다.
  5. ssl 모듈의 PEM_cert_to_X509 함수를 사용하여 PEM 형식의 인증서를 X509 객체로 변환합니다.
  6. X509 객체의 get_notAfter 메서드를 사용하여 인증서의 만료일을 가져옵니다.
  7. 만료일을 반환합니다.
  8. 실행 예시에서는 “example.com” 도메인의 HTTPS 서버 SSL/TLS 인증서 만료일을 확인하고 출력합니다.

결론

Fabric 라이브러리를 사용하면 Python에서 간단하게 서버 인증서의 만료일을 확인할 수 있습니다. 이를 통해 원격 서버의 보안을 강화하고, 만료일을 간과하는 문제를 사전에 예방할 수 있습니다.

참고 자료