linux에서 설치하기 위한 방법.
일단, openssl을 단지 "사용"만 하기 위해서는 해당하는 배포판의 package 중에서
설치하면 된다. 그리고 대부분 openssl package가 필요할 때는 package manager가
아마도 알아서 설치했을 것이다. 그러니 보통 사람들은 여기에서 설명하는 과정이란
것이 쓸 데 없는 것에 지나지 않는다.
이 글의 목적은 openssl에 포함돼 있는 crypto library를 이리저리 들여다 보고,
수정도 해 보고, 스스로 컴파일해서 다른 응용 프로그램과 함께 사용해 보는 것이다.
$는 console에서 command prompt를 의미한다.
일단 소스 코드를 다운로드 한다.
http://www.openssl.org/source/에서 소스 코드를 다운로드 할 수 있다.
2007년 2월 23일 현재 최신 버젼은 0.9.8e 이다.
http://www.openssl.org/source/openssl-0.9.8e.tar.gzconsole에서 wget 같은 프로그램을 사용해서 다운로드한다.
그리고 tar 명령을 사용해서 압축을 푼다.
그 다음은 소스코드를 컴파일 가능한 상태로 만든다. 물론, 그냥 이 상태에서 make 명령으로
컴파일해도 컴파일은 되지만, config 같은 명령을 제공하는 소스코드는 config 명령으로
미리 설정해 주는 것이 좋다.
linux-elf 환경으로 설정했다고 나오고 끝난다. 이건 자기 환경에 따라 다를 수도 있다.
어차피 그냥 설치만 하고 끝날 것이 아니기 때문에 Makefile을 잠깐 살펴본다.
소스코드를 build하고 나서 설치할 위치가 나온다. 시스템에 이미 openssl package가 깔려
있을 수도 있으니 겹치지 않도록 저 위치에 그냥 설치하게 둔다.
위의 내용을 참고하여 최소한 프로그램들이 설치되어 있는지 확인한다. 사실 한번이라도
뭔가를 컴파일했던 환경이라면 대부분은 설치되어 있을 것이고, perl 은 혹시 모르니
와 같이 해서 확인한다.
계속해서 Makefile을 살펴보면
어떤 것들을 library에 포함시킬 것인지를 정하고 있다. SDIRS 항목을 잠시 살펴보면
1. 각종 hash function들과 message authentication code가 들어 있다.
2. block cipher (또는 대칭키 암호)들이 들어 있다.
3. 공개키 암호를 구현하기 위한 모듈들이 들어 있다. bn은 32-bit이나 64-bit 이상의 큰 수를
다루기 위한 모듈이다. bn 모듈은 기본적으로 거의 모든 공개키 모듈에서 사용된다.
ec는 타원곡선 연산을 위한 모듈이다. 타원곡선 연산은 ecdsa, ecdh 등에서 사용된다.
4. 암호 알고리즘을 구현하기 위한 기타 필수 요소들이다. string buffer, 입출력, random number
generation 등등이 들어 있다.
5. 각종 암호학 알고리즘의 입력, 혹은 출력을 표현하기 위한 형식들이 정의된다.
예를 들면 X.509 인증서 형식, ASN.1 데이터 표현형식 pkcs 등의 SSL에서의
인증서 형식 등등이다.
마지막에 써 있듯이 config (혹은 Configure) 명령을 통해서 어떤 모듈을 포함시킬 것인지를
정해 줄 수 있다. 일단은 default 상태로 둔다.
두가지 주요 라이브러리를 생성하고 이것으로부터 shared object 등을 만든다.
사실 SSL 프로토콜을 위해서는 libssl.a가 필요하지만, 암호 라이브러리만을 위해서라면
libcrypto.a 만 있으면 된다. 물론, 다른 입출력이나 데이터 표현과 관련된 기능도
있어야 한다. 그 이후는 특별히 살펴볼 필요는 없을 것 같다.
이제 컴파일을 한다. 컴파일과 설치 자체는 대단히 간단하다.
$ make
라고 하면 컴파일이 시작된다. 끝날 때까지 할 일은 없고 기다리면 된다.
command prompt가 다시 나오면 끝난 것이다. 이때
와 같이 깨끗하게 끝나야 한다. error가 떴다면 문제를 수정해야 한다. 특별히 컴파일에 문제를
일으킬 만한 것은 당장 생각나지 않으니 일단 패스! -.-;
make까지는 자신의 홈디렉토리에서 수행해도 되지만 /usr/local 과 같은 곳에 설치를 하려면
root 권한이 있어야 한다. root 권한이 없거나 자신의 홈디렉토리에만 설치하고자 할 때는
config 명령으로 소스코드를 설정할 때 설치 디렉토리를 설정해 주어야 한다.
$ ./config --prefix=디렉토리이름
과 같은 식으로 하면 된다. config를 다시 했으면 컴파일을 다시 해주는 것이 좋다.
만약 뭔가가 꼬여서 처음의 깨끗한 상태에서 다시 시작하고 싶다면
$ make clean
이라고 한 다음에 다시 make하면 된다.
make가 끝났으면 install을 한다. install은
$ make install
이라고 하면 문제없이 수행되어야 한다. 설치하려는 곳에 권한이 없으면 에러가 출력될
것이다. 이때는 config를 다시 하고 make clean을 수행하고 다시 make하고 이어서
make install을 하는 게 안전하다.
기본적인 설정으로는
shared library를 만들지 않도록 되어 있다. shared library를
만들려면 config 명령에 shared라는 argument를 주면 된다.
$ ./config shared
혹은
$ ./config shared --prefix=디렉토리이름