일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OSX
- SwiftUI
- 앨범북
- appres
- 인증
- fido
- SSH
- git
- OTP
- css
- otpkey
- WebAuthn
- MFA
- FIDO2
- Nodejs
- apple
- openssl
- albumbook
- MSYS2
- 앱스토어
- 앱리소스
- 안드로이드
- SWIFT
- 애플
- SSL
- kmip
- Android
- Xcode
- MYSQL
- 2FA
- Today
- Total
인디노트
OpenSSL 컴파일(compile) & 빌드(build) 본문
개요
OpenSSL 은 Eric A. Young 이 만든 SSLeay 라이브러리를 기반으로 상용수준의 데이타암복호/SSL/TLS 라이브러리를 만들기 위한 프로젝트이다.
Linux 라면 apt-get이나 yum 으로 한방에 설치 가능하지만 Un*x 나 Windows 에서는 컴파일 할 일이 가끔 생겨서 빌드 방법을 정리해 본다.
빌드 사전 준비
- C/C++ Compiler가 필요하다. Windows 에서는 Visual Studio 2010 Express 버전을 사용하였고 HP-UX 에서는 aCC compiler 를 사용하였다.
- perl 이 필요하므로 Windows는 ActivePerl 이나 Strawberry Perl 을 미리 설치해 놓는다. (대개의 Unix 는 미리 설치되어 있다.)
빌드
- 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
Unix / Linux 빌드 방법
./Configure os-cpu-compiler 추가 옵션을 수행하면 된다. 다음은 HP-UX 에서 64bit 로 dynamic library 로 컴파일 하기 위한 설정이다.
- OS와 compiler를 잘 모를경우 다음과 같이 ./config 를 수행하면 해당 시스템에 맞게 자동으로 진행한다.(보통 32bit 로 build 하므로 64bit 가 필요할 경우 수동으로 os/compiler 주어야 한다.)
--prefix 옵션을 주지 않으면 기본적으로 /usr/local/ 밑에 나눠서 들어간다. header (.h)는 /usr/local/include/openssl, openssl 실행 파일은 /usr/local/bin, library 는 /usr/local/lib/openssl 폴더에 설치된다.
기본적으로 정적 라이브러리(static library)로 컴파일되며 만약 동적 라이브러리(shared library) 로 컴파일할 경우 ./config 시 shared 옵션을 추가한다. (기본값 no-shared)
설정이 완료되었으면 make 명령어로 컴파일한다.
컴파일된 프로그램과 라이브러리/헤더를 설치한다. --prefix 로 경로를 지정했으므로 설치 경로는 /usr/local/ssl 이 된다.
Windows 용 빌드 방법
- cmd를 열고 Visual Studio 에 포함되어 있는 vcvars32.bat를 실행해서 cmd에서 Visual C++ Compiler를 사용할 수 있게 환경 변수를 설정한다.
다음 명령어를 수행한다.(--prefix 뒤에는 설치될 경로를 입력)
64bit 로 빌드할 경우는 VC-WIN32 대신 VC-WIN64A 를 사용한다.- enable-static-engine 를 Configure 시 입력하면 engine 을 libeay32.dll 에 포함시킬수 있다.(기본은 별도의 dll)
- Debugging symbol로 빌드하려면 VC-WIN32 대신 debug-VC-WIN32 를 입력한다.
Makefile을 만들기 위해 다음 명령어 실행
64bit 로 빌드할 경우는 ms\ do_win64a 를 실행한다.nmake로 빌드 시작(static 의 경우 ms\nt.mak 를 사용)
test 를 수행하려면 다음 명령어 실행
prefix로 지정해준 경로에 설치하려면 다음 명령어 실행
TroubleShooting
Windows에서 빌드시 다음 같은 오류가 나면 해당 소스 파일을 에디터에서 열어서 UTF-8 형식으로 저장하거나 소스의 처음 부분에 ''#pragma warning(disable: 4819)'' 를 추가해 준다.
어셈블러 에러가 나면 config 에 no-asm 옵션을 추가한다.
Pre Compiled Binary
OpenSSL Wiki 에 Windows용 미리 컴파일 한 바이너리를 다운받을 수 있는 사이트가 정리되어 있다.
- 실행 파일과 DLL만 배포 - https://indy.fulgan.com/SSL/openssl-1.0.2h-i386-win32.zip
- header 와 library 포함 배포판 - https://slproweb.com/download/Win32OpenSSL-1_0_2h.exe
'인증기술 > PKI 기술' 카테고리의 다른 글
[c++] OpenSSL 라이브러리를 사용하여 C ++에서 SHA 해시 생성 (0) | 2018.10.05 |
---|---|
리눅스 환경에서 OpenSSL 설치 및 gcc 컴파일 옵션 (0) | 2018.10.05 |
Comparison of cryptography libraries (0) | 2018.10.05 |
jscep (0) | 2018.09.28 |
오픈소스 PKI 문서 - 서지 (0) | 2018.09.27 |