cert_gen.py•1.31 kB
from OpenSSL import crypto
import os
from app.core.config import settings
def generate_self_signed_cert():
    """
    HTTPS 서버를 위한 자체 서명 인증서를 생성합니다.
    """
    # 인증서 디렉토리 확인
    cert_dir = os.path.dirname(settings.CERT_FILE)
    if not os.path.exists(cert_dir):
        os.makedirs(cert_dir)
    # 키 생성
    k = crypto.PKey()
    k.generate_key(crypto.TYPE_RSA, 2048)
    # 인증서 생성
    cert = crypto.X509()
    cert.get_subject().C = "KR"
    cert.get_subject().ST = "Seoul"
    cert.get_subject().L = "Seoul"
    cert.get_subject().O = "MCP Server"
    cert.get_subject().OU = "Development"
    cert.get_subject().CN = settings.HOST
    cert.set_serial_number(1000)
    cert.gmtime_adj_notBefore(0)
    cert.gmtime_adj_notAfter(365 * 24 * 60 * 60)  # 1년
    cert.set_issuer(cert.get_subject())
    cert.set_pubkey(k)
    cert.sign(k, 'sha256')
    # 인증서 및 키 파일 저장
    with open(settings.CERT_FILE, "wb") as cert_file:
        cert_file.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
    with open(settings.KEY_FILE, "wb") as key_file:
        key_file.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, k))
    print(f"자체 서명 인증서 생성 완료: {settings.CERT_FILE}, {settings.KEY_FILE}")