Windows 환경에서의 OpenSSL 설치 (Visual Studio 에서 OpenSSL 라이브러리사용하기 ) 문서최초작성일 : 2007-06-21 < Ver 0.1 > 문서작성자 : 정은석이메일주소 : EunSeok.Jeong@Gmail.com 본설치매뉴얼은 Windows 플랫폼상에서 OpenSSL를어떻게설치하고 Visual Studio에서이라이브러리를어떻게사용하는지알려주기위하여작성하였습니다. 혹시틀린내용이있거나도움이될만한내용이있으면언제든지메일을보내주시길바랍니다. ^^ 지금부터는편의상존칭을생략하고적도록하겠습니다. [ 설치과정 ] 본매뉴얼에따라 OpenSSL을설치하기위해서는다음과같은것들을미리준비한다. 1. Windows System : Windows 2000 or Windows XP : 이것은기본적으로이미갖추어진환경이라본다. 2. OpenSSL : OpenSSL ( Version 0.9.8e ) : OpenSSL은 http://www.openssl.org/source/ 이곳에서다운로드받을수있다. 작성시점에서최신버전은 openssl-0.9.8e.tar.gz이다. 3. Perl : ActivePerl ( Version 5.8.8.820 ) : ActivePerl은 http://www.activestate.com/store/activeperl/download/ 이곳에서다운로드받을수있다. 작성시점에서최신버전은 ActivePerl-5.8.8.820이다. 다운로드를위해서는이름과직장명정도의간단한정보입력을요구한다. 4. NASM : NASM ( Version 0.9.8e ) : Free Netwide Assembler NASM은아래경로에서다운로드받을수있다. http://www.kernel.org/pub/software/devel/nasm/binaries/win32/ 작성시점에서최신버전은 nasm-0.98.39-win32.zip 이다. 이매뉴얼의작성시점 (2007년 6월 21일 ) 에가장최신의버전들을이용하여설치하였으나 Major Version Up이아닌이상설치과정에큰차이를보이지는않을것으로생각된다. 위의것들이준비되었다면설치를시작해보자.
[ ActivePerl 의설치과정 ] 1) 다운로드받은설치파일을실행하면다음과같은화면으로설치를시작하게된다. Perl 을설치하는이유는 OpenSSL을설치하기위해서 Perl Interpreter가필요하기때문이다. Next 누름. 2) 어떠한구성요소들을설치할지선택한다. 기본경로는 C: Perl 로되어있는데굳이꼭바꾸겠다면바꾸어도되지만기본값으로그냥두고설치하기를추천한다. Next 누름.
3) Perl을 Path 환경변수에더할것인가그리고 Perl파일의확장자 ( 즉, *.pl과같은 ) 를등록하겠는가를선택하는화면이다. 마찬가지로둘다체크된기본값으로두고 Next 누름. 4) Perl의설치가진행된다. Generating HTML documentation 단계에서시간이좀오래소요되니중지하지말고기다리자.
5) 설치종료. 아래와같은화면이뜨면 Perl의설치가완료된것이다. Release Notes는꼭읽어야하는것은아니다. 본인의선택에따라결정하고 Perl의설치를마친다. 6) Perl이시스템의 Path 환경변수에등록이정상적으로되었는지확인한다. 문제없이설치되었다면 Path 환경변수의제일앞에 C: Perl bin; 과같은내용이추가되었을것이다. 혹시 C: Perl site bin; 과같은내용도추가되었을수도있는데어차피이건 Path 경로이기때문에그냥두어도상관없다. 만약이러한내용이추가되지않았다면꼭추가해주도록한다. 그렇지않으면나중에 OpenSSL을설치할때문제가생기게된다.
[ NASM 의설치과정 ] 1) 어셈블리컴파일러가필요한이유는 OpenSSL의설치시에속도에큰영향을미치는부분을어셈블리로컴파일하기위해서이다. 다들아시다시피성능에큰영향을미치는부분이어셈블리로작성되었을경우얻어지는성능향상은무시하지못할만큼꽤크다. OpenSSL 역시암호화기능으로인해많은연산을요구하므로어셈블리로그런부분을처리하여속도향상을꾀한것같다. 다운로드받은 NASM을적절한경로에풀어주고해당경로를시스템의 Path 환경변수에등록한다. 글쓴이의경우 OpenSSL 설치에필요한것들을 C: OpenSSL_Install이란곳에모아놓고설치하였으므로아래와같은경로를등록하였다. [ OpenSSL의설치과정 ] 여기까지문제없이왔다면 OpenSSL 설치를위한기본적인환경은구축된셈이다. 1) 명령어프롬프트창을하나띄운다.
2) (Configure 과정 ) OpenSSL을적당한경로에압축을풀어놓고해당경로에서다음과같은명령어를수행한다. 명령어 : perl Configure VS-WIN32 3) 위의명령어를수행하여정상적으로처리되면아래그림과같이나올것이다.
4) (Makefile 생성과정 ) 이제다음명령어를수행한다. 명령어 : ms do_nasm 5) (Building 과정 ) 위의명령어를수행하여정상적으로처리되면아래그림과같이나올것이다. 그러면이제다음명령을수행한다. 명령어 : nmake -f ms ntdll.mak
6) 위의명령어를수행하면아래그림과같은내용이쭉나오면서계속컴파일될것이다. 컴파일하는데시간이제법소요된다. 완전히작업이끝날때까지기다리자. 7) 컴파일을모두마치고나면해당경로에서다음과같은명령어를수행하여아래파일들이생성되었는지확인한다. 생성되는파일들은모든 out32dll안에생성된다. dir out32dll *.dll out32dll *.lib 생성되어야하는파일들 : libeay32.dll, ssleay32.dll, libeay32.lib, ssleay32.lib
8) (Test 과정 ) 4개의파일들이생겼다면이제테스트를해본다. 압축푼디렉토리안의 out32dll이라는폴더안으로들어간다. 그리고그안에서다음명령어를실행하여테스트를수행한다. 명령어 :.. ms test 여기서기억해야할것은꼭 out32dll 디렉토리안에들어가서테스트명령을실행해야한다는점이다. 그렇지않고그냥압축푼디렉토리그상태에서명령어를수행하면아래두번째있는그림처럼에러가나며테스트가진행되지않는다.
10) 모든것이정상적으로설치되었다면테스트과정은성공적으로마치고 passed all tests라는문구가나오게된다. 이문구를보았다면 OpenSSL의설치를성공적으로수행한것이다. 축하한다! ^^; [ Visual Studio 에서 OpenSSL 사용하기 ] 1) 이제 OpenSSL은다설치되었기때문에 Visual Studio에서사용하기만하면된다. 우선 OpenSSL을설치하던곳 ( 즉, OpenSSL을압축풀어놓았던곳 ) 의헤더파일들을 Visual Studio의 include 디렉토리안에복사해넣는다. openssl-0.9.8e include 이안에보면 openssl이라는디렉토리가있고그안에보면수십개의헤더파일들이존재한다. 이 openssl 디렉토리를통째로복사하여 C: Program Files Microsoft Visual Studio VC98 Include 이안에넣어준다. 이것을수행하고난뒤의디렉토리구성은다음과같다.
2) Visual Studio를실행하여 Win32 Console Application으로새프로젝트를하나만들어 empty project를연다. 3) 다음과같은소스코드를입력한다. /////////////////////////////////////////////////////////////////////////////////////// #include <stdio.h> #include <openssl/ssl.h> #include <openssl/rand.h> void main() { int i = 0; int isize = 64; unsigned char* ubuff = NULL; ubuff = (unsigned char*)malloc(sizeof(unsigned char) * isize); RAND_screen(); RAND_bytes(uBuff, isize); printf("rand() is... n"); for (i = 0; i < isize; i++) { printf("%d n", (int)ubuff[i]); } delete ubuff; } ///////////////////////////////////////////////////////////////////////////////////////
4) Ctrl+F5를눌러보면컴파일은되는데몇가지 Link관련에러가나는것을확인할수있다. 이것은 OpenSSL 라이브러리를연결하지않아서그런것이다. 5) 아까 OpenSSL 소스파일이있던경로에가서 out32dll안에보면 libeay32.lib, ssleay32.lib, libeay32.dll, ssleay32.dll 이파일들이있는데확장자가 lib인것은정적라이브러리, dll인것은동적라이브러리이다. 테스트를위하여 libeay32.lib, ssleay32.lib 이두파일을복사하여 OpenSSL_Test라고만들었던 Visual Studio 프로젝트디렉토리안에붙여넣는다. 그리고 Visual Studio 메뉴에서 Project -> Settings -> Link -> Object/library modules 란에 libeay32.lib ssleay32.lib를추가로입력해준다.
6) 확인을눌러 Project Settings 창을닫고다시 Ctrl+F5를눌러보자. 에러없이잘수행되는것을확인할수있다. 만약다시에러가난다면프로젝트디렉토리안에 Debug 디렉토리를통째로지운후다시시도해본다. 테스트한소스의내용은 OpenSSL 라이브러리를이용하여 Random Number를출력한것이다. 아래그림처럼랜덤한숫자들이출력된다면성공한것이다. [ 맺음말 ] 여기까지모든과정이문제없이진행되었다면 OpenSSL을성공적으로설치하고 Visual Studio에서이를사용하는가장기본적인방법까지익힌것입니다. 축하합니다 ~! ^^; 이제앞으로남은일은이것들을열심히다루어보고 OpenSSL라이브러리를완전히자기것으로익히는것이겠죠? 앞으로의험난한여정을위해설치매뉴얼은이것으로끝을내도록하겠습니다. 그럼이만 ~ ^^ / ////////////////////////////////////////////////////////////////////////////////////////////////////// 문서최초작성일 : 2007-06-21 < Ver 0.1 > 문서작성자 : 정은석이메일주소 : EunSeok.Jeong@Gmail.com