OpenSSL은 런타임에 libcrypto 및 libssl DLL 파일에서 로드되는 대신, 애플리케이션 실행 파일 안에 직접 링크될 수 있습니다. 즉, TLS를 사용하는 애플리케이션은 어떠한 OpenSSL DLL도 배포할 필요가 없으며, 필요한 모든 것이 이미 .exe 파일 안에 포함되어 있습니다.
이는 단일 파일로 배포하고자 할 때, 대상 시스템에 올바른 OpenSSL DLL이 설치되어 있다고 보장할 수 없을 때, 또는 배포 프로세스에서 실행 파일 옆에 추가 파일을 둘 수 없을 때 유용합니다.
별도로 설정할 것은 없습니다. 프로젝트의 uses 절에 sgcIdSSLOpenSSL_Static 유닛을 추가하기만 하면 됩니다. 예를 들어 메인 .dpr 파일에서 다음과 같이 추가합니다:
uses
sgcIdSSLOpenSSL_Static;
이것으로 끝입니다. 활성화해야 할 컴파일러 지시문도 없고 선택해야 할 OpenSSL API 버전도 없습니다. 다음 실행부터 클라이언트와 서버 구성 요소 모두 실행 파일에 링크된 OpenSSL 라이브러리를 바로 사용하기 시작합니다. uses 절에서 해당 유닛을 제거하면, 애플리케이션은 이전과 완전히 동일하게 OpenSSL DLL을 로드하는 방식으로 돌아갑니다.
현재 링크되는 OpenSSL 버전은 3.5.7입니다. 이 버전은 최신 OpenSSL 수정 사항을 반영하기 위해 수시로 업데이트되므로, OpenSSL 버전을 직접 추적하거나 배포할 필요가 없습니다.
E2045 Bad object file format
이는 XE2보다 이전 버전의 Delphi로 컴파일하고 있음을 의미합니다. 정적 링킹에는 Delphi XE2 이상이 필요하므로, uses 절에서 sgcIdSSLOpenSSL_Static 유닛을 제거하면 애플리케이션은 계속해서 OpenSSL DLL을 사용하여 정상적으로 동작합니다.