OpenSSL Windows 에서 Visual Studio 로 빌드


윈도에서 OpenSSL 소스를 빌드하여 사용하는 방법.

사전 준비

  • Visual Studio 컴파일러가 필요하다. 상용 라이센스가 없다면 Express 버전을 사용해도 된다.
  • 원래는 perl 이 필요하나 Visual Studio 프로젝트 파일을 사용하므로 상관없다.

빌드

  • openssl 홈페이지에서 라이브러리를 다운받는다.
  • 압축을 풀고 나온 Install로 시작되는 파일들을 읽어 본다. 플랫폼별로 존재하며 확장자에는 플랫폼명이 있다. 
    예로 Win32 에서 빌드할 경우 Install.w32, Win64는 Install.w64를 참고하며 Unix는 Install 를 읽어 본다
  • perl 로 작성된 ./Configure 스크립트를 수행하여 Makefile 을 생성하고 build 환경을 구성하게 된다. 
    기본적으로 static library 로 빌드되므로 dynamic library 로 빌드할 경우 shared 옵션을 추가한다.


openssl 에는 특허가 걸려있는 알고리즘이 있다. 오래되서 취약하고 쓸 일도 없는 알고리즘들이므로 다음 옵션을 꼭 추가해서 build 시 제외시키자.

no-idea no-md2 no-mdc2 no-rc5 no-rc4



Windows 용 빌드 방법

  • 소스 다운로드

    git clone https://github.com/openssl/openssl.git
  • 안정 버전 체크아웃

    git checkout -b OpenSSL_1_0_2-stable origin/OpenSSL_1_0_2-stable
  • nmake 용 Makefile 생성

    perl Configure VC-WIN32 no-idea no-md2 no-mdc2 no-rc5 no-rc4  no-asm --prefix=d:\devel\openssl\openssl-1.0.0d_vc2010
  • 빌드

    ms\do_ms.bat

TroubleShooting

  • Windows에서 빌드시 다음 같은 오류가 나면 해당 소스 파일을 에디터에서 열어서 UTF-8 형식으로 저장하거나 소스의 처음 부분에 ''#pragma warning(disable: 4819)'' 를 추가해 준다.

    현재 코드 페이지(number)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.
    The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss.


같이 보기