정리

Windows에서 openssl 빌드 방법2

저장소/VC++

원문 출처 : http://blog.iseohyun.co.kr/120128190854


파일 생성 경로 등 설정


1) x86 static library

perl Configure VC-WIN32 --openssldir=D:\OpenSSL32_x86 no-shared no-asm threads no-idea no-mdc2 no-rc5


2) x86 static debug library

perl Configure debug-VC-WIN32 --openssldir=D:\OpenSSL32_x86_debug no-shared no-asm threads no-idea no-mdc2 no-rc5


3) x64 static library

perl Configure VC-WIN64A --openssldir=D:\OpenSSL32_x64 no-shared no-asm threads no-idea no-mdc2 no-rc5


4) x64 static debug library

perl Configure debug-VC-WIN64A --openssldir=D:\OpenSSL32_x64_debug no-shared no-asm threads no-idea no-mdc2 no-rc5


라이센스 문제로 인한 IDEA, MDC2, RC5를 제외시키는 방법은 위와 같고 그냥 출력 경로를 바꾸려면 아래와 같이 해라.


perl Configure VC-WIN32 --openssldir=D:\OpenSSL_x86

perl Configure VC-WIN64A --openssldir=D:\OpenSSL_x64



OpenSSL은 잘알려진 각종 암호화, 서명과 같은 툴을 이용하는 도구이다. 인증서에 사용되는 RSA서명은 물론, 암호화에 자주 사용되는 AES나 DES를 사용할 수 있으며, 기타 다른 알고리즘을 구현하기에도 용이하다. 오픈 소스를 사용하기 앞서, 이번 포스트에서는 배포되는 오픈소스의 라이브러리를 생성하는 과정을 소개한다.

(참고로, 라이브러리를 수정할 것이 아니라면 라이브러리 작성 과정을 생략하고 라이브러리만 설치(또는 카피copy)하면 된다.

다시말해 아래 과정을 다 수행 할 필요없이 첨부파일을 다운받아 설치만해도 된다는 뜻이다. 과정 8만 진행)

 

I. 재료구하기

소개에 앞서 라이브러리를 만드는 재료를 구하기 바란다.

※ 링크의 자료는 각 사이트의 업로드나 리뉴얼에 따라서 바뀔 수 있다. 댓글로 남겨놓으면 수정하도록 한다.

 

OpenSSL프로그램 다운로드

http://www.openssl.org/source/openssl-0.9.8k.tar.gz

 

ActivePerl 다운로드

http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1004-MSWin32-x86-287188.msi

(출처 :

http://blog.daum.net/_blog/BlogView.do?blogid=0Idq4&articleno=8429385&admin=&refequery=openssl+install#ajax_history_home)

 

2008 무료 다운로드(학생용)

http://www.microsoft.com/express/download/#webInstall

 

인스톨 공식 문서는 OpenSSL을 다운로드 한 뒤 해당 폴더에서 찾을 수 있다.

C:\openssl-0.9.8k\INSTALL를 워드 파일로 열거나(영문)

C:\openssl-0.9.8k\INSTALL.W32를 워드 파일로 연다.(영문)

 

II. 라이브러리 작성

재료가 다 구해졌다면 라이브러리를 만들어보자.

1. ActivePerl 설치

 

2. OpenSSL 압축해제C:\openssl-0.9.8k 에 압축해제.

 

3. 컴파일환경 설정(Optional)

☞ C:\openssl-0.9.8k\Configure 파일에 VC-WIN32라는 파일을 로드한다컴파일 결과 파일이 C:\OpenSSL로 설치 되도록 한다.

 명령어 : perl Configure VC-WIN32 --openssldir=C:\OpenSSL

 

4. 어셈블리 사용여부.

☞ 어셈블리어를 사용하지 않는 경우 ms\do_ms.batNASM

☞ 어셈블리어를 사용하는 경우 ms\do_nasm.batMASM

☞ 어셈블리어를 사용하는 경우 ms\do_masm.bat

 

5. 소스 수정

☞ 소스파일 최상단에 위치한 주석문에 특수문자가 포함되어 있어서 컴파일 오류가 발생하기 때문에소스파일 가장 위에 주석문을 제거하고 저장함.

(/* v3_pci.c -*- mode:C; c-file-style: "eay" -*- */)

penssl-0.9.8k\crypto\x509v3\v3_pci.c

openssl-0.9.8k\crypto\x509v3\v3_pcia.c

삭제 하지 않으면 다음과 같은 오류 발생 :

NMAKE : fatal error U1077: '"path\cl.exe"' : return code '0x2

 

6. 환경변수에 nmake.exe의 위치를 추가 시킴.

목적 : nmake 실행

내컴퓨터 우클릭 -> 속성 -> 시스템 등록정보 -> 환경변수 -> XXX에 관한 사용자 변수(U)에서 PATH선택 -> 편집 -> 마지막에 “;” 추가후 입력

) C:\Program Files\ESTsoft\ALZip; C:\Program Files\OpenVPN\bin; C:\openssl-0.9.8k;

C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

 

7. 컴파일

☞ Command창에서 다음을 순서대로 입력.

입력하기 전에 다음과 같은 명령을 수행한다.

C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat

(C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat 와 내용 동일)

인스톨 시행전에 vcvarsall.bat을 실행하지 않았을 때 다음과 같은 문제 발생

NMAKE : fatal error U1077: '"path\cl.exe"' : return code '0xc0000135'

ans) path경로 설정문제

[참고] http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/325b5459-c469-40d0-bf6d-e3356a2f14cd/


x64의 경우

C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\amd64\vsvars64.bat 를 실행해야 한다.

안 그러면 아래와 같은 에러 발생

NMAKE : fatal error U1077: '"...\link.exe"' : return code '0x458'

[참고] http://www.mentby.com/younie-bradford/need-help-trying-to-build-openssl-in-windows-x64.html

 

7.1. nmake -f ms\ntdll.mak (2~3분 소요)

컴파일을 하고 실행이 정상적으로 완료되면 C:\openssl-0.9.8k\out32dll에 파일이 생성된다.

 

7.2. nmake -f ms\ntdll.mak test (1~2분 소요)

컴파일 된 데이터를 테스트 한다.

 

7.3 nmake -t ms\ntdll.mak install (1~2분 소요)

include, lib, bin을 생성한다.

 

8. 다음 파일을 사용하는 방법에는 2가지 방법이 있다.

8.1. 라이브러리에 직접 추가하는 방법

☞ 각각의 파일을 경로에 붙인다.

) C:\OpenSSL\bin libeay32.dll, openssl.exe, ssleay32.dll

 ->C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

 ->C:\Program Files\Microsoft Visual Studio\VC98\Bin

C:\OpenSSL\include openssl폴더

 ->C:\Program Files\Microsoft Visual Studio 9.0\VC\include

 ->C:\Program Files\Microsoft Visual Studio\VC98\include

C:\OpenSSL\lib libeay32.lib, ssleay32.lib

 ->C:\Program Files\Microsoft Visual Studio 9.0\VC\lib

 ->C:\Program Files\Microsoft Visual Studio\VC98\lib

 

8.2. 라이브러리 경로를 추가 하는 방법

 Microsoft Visual Studio 6.0

Tools -> Option -> Directories -> Include files -> C:\OpenSSL\include 추가

Executable files -> C:\OpenSSL\bin 추가Library files -> C:\OpenSSL\lib 추가

project -> settings -> Link ->Object/library modules:ssleay32.lib libeay32.lib 추가

(미실행시 에러)

1>test.obj : error LNK2019: unresolved external symbol _RAND_bytes referenced in function _main

 

☞ Microsoft Visual Studio 2008

Tools -> Options -> VC++ Directories -> Show directories for: ->Include files -> C:\OpenSSL\include 추가

Executable files -> C:\OpenSSL\bin 추가

Library files -> C:\OpenSSL\lib 추가

(프로젝트이름) Property Pages -> Configuration Properties -> Linker -> Command Line -> Additional options : -> ssleay32.lib libeay32.lib추가

'저장소 > VC++' 카테고리의 다른 글

동기화 - Spin Lock  (0) 2012.11.09
WMI(Windows Management Instrumentation) C++ Sample  (0) 2012.11.09
Windows에서 openssl 빌드 방법1  (0) 2012.11.05
[펌] Windwos에서 openssl 빌드  (0) 2012.11.05
ifstream 한글 문제  (0) 2012.10.30