티스토리 뷰

OpenSSL을 사용할일이 생겼다 -_- 윈도우즈에서;;
리눅스에서는 이미 rpm패키지나 소스 컴파일시 별 무리 없이 설치가 되는데 윈도우즈에서는 뭥미~

일단 perl과 gcc를 기냥 사용가능한 MSYS에서 컴파일 해보기로 하고 일단 소스를 받아서
./configure, make, make install을 때려봤다.... 역시나 안된다 크흑 ㅠㅠ

귀찮음을 안고서 구글님꼐 물어보러 ㄱㄱ

근데 바로 깔끔하게 정리된 블로그 발견 ~~ 님 감사 감사 ㅠㅠ

덕분에 금방 컴파일 했어요 ㅋ 이제 튀어나온 lib, dll 파일을 문서보고서 쓰기만 하면 된다능 ㅋ


출처 : http://blog.daum.net/aswip/8429385
--------------------------------------------------------------------------------------------

※ 들어가기에 앞서 ...

    설명의 편의상 아래와 같은 가정을 전제하고 읽어주세요~ ^^

    openssl-0.9.8k.tar.gz 파일은 H:\openssl-0.9.8k 디렉토리에 압축이 풀렸음.
    OpenSSL 설치 디렉토리는 C:\OpenSSL 이라고 가정함.

1. OpenSSL 다운로드

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


2. ActivePerl 설치

    openssl 라이브러리를 컴파일 하기 위해서는 perl 이 필요합니다.

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

    다운로드 받은 ActivePerl을 설치합니다. (※ 설치시 Next 버튼만 계속 누르면 됩니다. ^^)


3. 전반적인 컴파일 환경 구축

    압축이 해제된 디렉토리로 이동하여, 아래와 같이 명령어를 입력합니다.

    > perl Configure VC-WIN32 --openssldir=C:\OpenSSL-x86-debug no-shared no-asm threads

 

    참고로 --openssldir=C:\OpenSSL 과 같이 입력하면 "C:\OpenSSL" 디렉토리에 라이브러리가 설치됩니다.

  

    


4. 구체적인 컴파일 환경 구축

    컴파일 환경은 다음과 같이 3가지 유형중 한 가지를 선택하여 사용이 가능합니다.


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

    NASM 어셈블리어를 사용하는 경우    ms\do_nasm.bat    

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


    만약, 어셈블리어를 사용하지 않을 경우에는, 아래와 같이 명령어를 입력합니다.

   


5. 소스 수정

    윈도우 환경에서는 아래와 같은 파일을, OpenSSL을 컴파일 하기 이전에 수정해 주어야 합니다.

    (아마 다음 OpenSSL 버전에서는 필요없는 과정이 될 수도 있겠군요.. ^^;;)


    1) openssl-0.9.8k\crypto\x509v3\v3_pci.c

        소스파일 최상단에 위치한 주석문에 특수문자가 포함되어 있어서 컴파일 오류가 발생하기 때문에,

        소스파일 가장 위에 주석문을 제거하고 저장함.


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

        소스파일 최상단에 위치한 주석문에 특수문자가 포함되어 있어서 컴파일 오류가 발생하기 때문에,

        소스파일 가장 위에 주석문을 제거하고 저장함.


    3) openssl-0.9.8k\crypto\cversion.c

        cversion.c 105 번째 라인을 아래와 같이 수정함.

        [수정 전] return "OPENSSLDIR: \"" OPENSSLDIR "\"";

        [수정 후] return "OPENSSLDIR: \" OPENSSLDIR \"";


    4) openssl-0.9.8k\crypto\cryptlib.h

        cryptlib.h 84~86번째 라인을 아래와 같이 수정함.

        


    5) openssl-0.9.8k\crypto\opensslconf.h 

        opensslconf.h 107~108번째 라인을 아래와 같이 수정함.

      


6. 컴파일 및 설치

    정적 라이브러리 빌드 인 경우 : nmake -f ms\nt.mak install

    동적 라이브러리 빌드 인 경우 : nmake -f ms\ntdll.mak install

    만약, 동적 라이브러리 컴파일 및 설치를 위해서는 아래와 같이 명령어를 입력합니다.

   


7. 설치 결과

    첨부된 "OpenSSL.zip"파일은 윈도우 환경에서 OpenSSL을 컴파일한 결과물을 압축한 파일입니다.

   OpenSSL.zip


8. 테스트 코드

#include <stdio.h>
#include <openssl/ssl.h>
#include <openssl/rand.h>

int main(int argc, char **argv)
{
    int nRand = 0;
    
    RAND_bytes((unsigned char *)&nRand, 1);    
    printf("Random number is %d\n", nRand);

    return 0;
}

 

9. OpenSSL x64 컴파일 및 설치

    [출처] http://stackoverflow.com/questions/158232/how-do-you-compile-openssl-for-x64


 

   To compile the static libraries (both release and debug), this is what you need to do:

  1. Install Perl - www.activestate.com
  2. Run the "Visual Studio 2008 x64 Cross Tools Command Prompt" (Note: The regular command prompt WILL NOT WORK.)
  3. Configure with perl Configure VC-WIN64A no-shared no-idea
  4. Run: ms\do_win64a
  5. EDIT ms\nt.mak and change "32" to "64" in the output dirs:
    # The output directory for everything intersting
    OUT_D=out64.dbg
    # The output directory for all the temporary muck
    TMP_D=tmp64.dbg
    # The output directory for the header files
    INC_D=inc64
    INCO_D=inc64\openssl
  1. EDIT ms\nt.mak and remove bufferoverflowu.lib from EX_LIBS if you get an error about it.
  2. Run: nmake -f ms\nt.mak
  3. EDIT the ms\do_win64a file and ADD "debug" to all lines, except the "ml64" and the last two lines
  4. Run: ms\do_win64a
  5. Repeat steps 4 and 5
  6. EDIT the ms\nt.mak file and ADD /Zi to the CFLAG list!
  7. Run: nmake -f ms\nt.mak
      Itanium 장비환경에서는 

      perl configure VC-WIN64I no-shared no-idea --openssldir=C:\OpenSSL

      ms\do_win64i.bat


'Com이야기 > C/C++' 카테고리의 다른 글

[C/C++] Windows에서 OpenSSL 써먹기  (0) 2011.04.06
[C/C++]Makefile 템플릿2  (0) 2010.12.15
[C/C++] Makefile 템플릿~~  (0) 2010.11.15
[C/C++]가변인자쓰기  (0) 2010.11.15
댓글
댓글쓰기 폼
공지사항
Total
94,495
Today
1
Yesterday
19
링크
«   2019/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함