[python] Fabric으로 원격 서버 무료 SSL 인증서 발급하기

이번 포스트에서는 Fabric을 사용하여 원격 서버에 무료 SSL 인증서를 발급하는 방법에 대해 알아보겠습니다.

Fabric 소개

Fabric은 파이썬으로 작성된 서버 관리 도구로, 원격 서버에 명령어를 실행하고 파일을 전송할 수 있습니다. 이를 통해 서버 관리 작업을 자동화할 수 있으며, 배포 및 설정 변경 등에 특히 유용합니다.

Let’s Encrypt 소개

무료로 SSL 인증서를 발급해주는 Let’s Encrypt는 현재 많은 웹사이트에서 인증서를 사용하고 있습니다. 이 포스트에서는 Let’s Encrypt를 사용하여 무료 SSL 인증서를 발급하고, Fabric을 사용하여 원격 서버에 적용하는 방법을 설명하겠습니다.

사전 준비

Fabric을 사용하기 전에 우선 다음 사항들을 준비해야 합니다.

  1. 로컬 머신에 Python 및 Fabric 설치
  2. 원격 서버에 SSH 접속 권한

Let’s Encrypt 인증서 발급

먼저, Let’s Encrypt를 사용하여 인증서를 발급해보겠습니다. 다음 명령어를 로컬 머신에서 실행합니다.

$ sudo apt-get update
$ sudo apt-get install certbot
$ sudo certbot certonly --standalone -d yourdomain.com

위 명령어에서 yourdomain.com 부분에 발급받을 도메인을 입력하면, Let’s Encrypt에서 해당 도메인에 대한 인증서를 발급해줍니다. 발급이 완료되면, /etc/letsencrypt/live/yourdomain.com/ 경로에 인증서와 관련 파일들이 저장됩니다.

Fabric 스크립트 작성

이제 Fabric을 사용하여 인증서를 원격 서버에 적용하는 스크립트를 작성해보겠습니다.

from fabric import Connection

def deploy_ssl_cert(host, username, cert_path, key_path, cert_folder):
    conn = Connection(host, user=username)

    # 원격 서버에 인증서를 복사
    conn.put(cert_path, cert_folder)

    # 원격 서버에 인증서 적용
    conn.sudo(f'cp {cert_folder}/fullchain.pem /etc/ssl/certs')
    conn.sudo(f'cp {cert_folder}/privkey.pem /etc/ssl/private')

    conn.close()

# 스크립트 실행
deploy_ssl_cert('your_server_ip', 'your_username', '/local/cert/path', '/local/key/path', '/remote/cert/folder')

위 스크립트에서 your_server_ip는 원격 서버의 IP 주소, your_username은 원격 서버에 접속할 사용자명, /local/cert/path/local/key/path는 로컬에서 발급받은 인증서 파일의 경로, /remote/cert/folder는 원격 서버에 인증서를 저장할 폴더 경로를 입력해야 합니다.

스크립트 실행

위 스크립트를 저장한 후, 다음 명령어를 실행하여 스크립트를 실행합니다.

$ fab deploy_ssl_cert

Fabric이 원격 서버에 인증서를 적용하는 작업을 수행하게 됩니다.

마무리

이렇게 Fabric을 사용하여 Let’s Encrypt에서 발급받은 무료 SSL 인증서를 원격 서버에 적용할 수 있습니다. 이를 통해 웹 서비스의 보안을 강화하고 HTTPS 통신을 지원할 수 있습니다.

더 자세한 정보는 Let’s Encrypt 공식 문서Fabric 공식 문서를 참고하세요.