[python] cx_Freeze를 사용하여 작성한 실행 파일의 서명 및 인증 관리하기

cx_Freeze는 Python 스크립트를 응용 프로그램으로 변환해주는 모듈입니다. 이 모듈은 실행 파일의 빌드와 관련된 다양한 기능을 제공합니다. 그 중 하나는 실행 파일의 서명과 인증 관리입니다. 실행 파일에 서명을 추가하면 사용자는 해당 파일이 신뢰할 수 있는 소프트웨어임을 보장 받을 수 있습니다.

OpenSSL 설치하기

cx_Freeze를 통해 실행 파일을 서명하기 위해서는 OpenSSL이 설치되어 있어야 합니다. OpenSSL은 공개키 인증서를 생성하고 관리하는 도구입니다. OpenSSL은 다음의 링크에서 Windows 용 설치 파일을 다운로드하여 설치할 수 있습니다. Linux나 macOS를 사용한다면 시스템 패키지 관리자를 사용하여 OpenSSL을 설치할 수 있습니다.

인증서 생성하기

서명을 추가하기 위해서는 인증서를 생성해야 합니다. 인증서는 공개키와 개인키 쌍으로 이루어져 있으며, 개인키는 서명 생성에 사용되고 공개키는 실행 파일과 함께 배포됩니다.

인증서를 생성하기 위해 다음의 명령어를 실행합니다:

openssl req -new -newkey rsa:2048 -nodes -out cert.csr -keyout privateKey.key

명령어를 실행하면 사용자로부터 몇 가지 정보를 입력할 것을 요구하는데, 이 정보는 인증서에 포함될 것입니다. 명령어 실행이 완료되면 cert.csr 파일과 privateKey.key 파일이 생성됩니다.

인증서 서명하기

인증서 생성이 완료되면 인증서를 서명해야 합니다. 서명은 개인키를 사용하여 수행되며, 인증서에는 서명 값이 추가됩니다.

다음의 명령어를 사용하여 인증서를 서명합니다:

openssl x509 -req -days 365 -in cert.csr -signkey privateKey.key -out certificate.crt

위 명령어를 실행하면 certificate.crt 파일이 생성됩니다. 이 파일은 실행 파일과 함께 배포될 것입니다.

cx_Freeze 설정 파일 수정하기

이제 cx_Freeze의 설정 파일을 수정하여 생성한 인증서를 사용할 수 있도록 설정해야 합니다. 설정 파일의 build_exe 섹션을 찾아 다음의 코드를 추가합니다:

build_exe_options = {
    # ...
    "include_files": ["certificate.crt"],
    # ...
}

위 코드는 생성한 certificate.crt 파일을 실행 파일과 함께 포함하도록 설정하는 역할을 합니다. include_files 리스트에는 다른 필요한 파일도 추가할 수 있습니다.

실행 파일 빌드하기

인증서를 생성하고 서명하는 작업이 완료되면 cx_Freeze를 사용하여 실행 파일을 빌드할 차례입니다. 다음 명령어를 실행하여 실행 파일을 빌드합니다:

cxfreeze your_script.py --build-dir=build

위 명령어에서 your_script.py는 실제로 빌드하려는 Python 스크립트 파일의 이름으로 바꿔주어야 합니다. --build-dir 옵션은 빌드된 실행 파일이 저장될 디렉토리의 경로를 지정합니다.

빌드가 완료되면 지정한 경로의 디렉토리에 실행 파일과 함께 certificate.crt 파일이 생성됩니다.

실행 파일 서명 확인하기

마지막으로 생성한 실행 파일의 서명을 확인해보는 것이 좋습니다. 이를 위해 signtool 명령어를 사용할 수 있습니다. 예를 들어 Windows 환경에서는 다음과 같이 실행할 수 있습니다:

signtool verify /v /pa build\your_script.exe

위 명령어는 실행 파일의 서명을 확인하고 결과를 출력합니다. 만약 서명이 성공적으로 확인된다면, 사용자는 해당 실행 파일이 정품임을 확신할 수 있습니다.

결론

cx_Freeze를 이용하여 작성한 실행 파일의 서명과 인증을 관리하는 방법에 대해 알아보았습니다. 인증서 생성, 서명, cx_Freeze 설정 파일 수정, 실행 파일 빌드 및 서명 확인하는 과정을 순서대로 따라가면 신뢰성 있는 실행 파일을 생성할 수 있습니다. 이를 통해 사용자들은 신뢰할 수 있는 소프트웨어를 사용할 수 있게 됩니다.

참고: cx_Freeze 공식 문서