Openssl 업그레이드 하기.

Coumputer's/Linux 2010. 12. 9. 19:40

openssl을 업그레이드 하기 위해서는 먼저 최신버전의 openssl을 다운받는다.
필자는 openssl-0.9.8b에서 openssl-0.9.8p버전으로 업그레이드 하였으며 oepnssl소스는
http://www.openssl.org에서 받을 수 있다. 
(다이렉트 링크 : http://www.openssl.org/source/openssl-0.9.8p.tar.gz)

1. compile하기.
  다운받은 source를 압축해제하여 config명령어를 사용하여 Makefile을 만든다.
 필자는 oepnssl을 설치하는 것이 목적이 아니라 prefix나 openssldir옵션은 주지 않았으며
 업그레이드 하기 위해서는 shared 라이브러리가 생성되어야 함으로 shared옵션만 주었다.
 # ./config shared
 # make
 make명령어를 치면 current디렉토리에 library파일들이 생성이 되며 ./apps 디렉토리에는 
 openssl파일이 생성된다.

2. 설치하기
 libcrypto 설치하기
 먼저 새로 생성한 libcrypto파일을 /lib 디렉토리에 copy한다.
  # cp libcrypto.so.0.9.8 /lib/libcrypto.so.0.9.8p
 기존 0.9.8b 버전에 걸려 잇는 symbolic link를 지워주고 새로 link를 생성한다.
  # rm -rf libcrypto.so.6
  # ln -s libcrypto.so.0.9.8p libcrypto.so.6
  # ls -al
lrwxrwxrwx 1 root root 19 Dec 8 13:10 /lib/libcrypto.so.0.9.8 -> libcrypto.so.0.9.8p -rwxr-xr-x 1 root root 1241576 Oct 16 2007 /lib/libcrypto.so.0.9.8b -rwxr-xr-x 1 root root 1530219 Dec 8 13:09 /lib/libcrypto.so.0.9.8p lrwxrwxrwx 1 root root 19 Dec 8 13:09 /lib/libcrypto.so.6 -> libcrypto.so.0.9.8p

 추가로 /usr/lib디렉토리에도 libcrypto.a와 libcrypto.so파일을 생성해 준다.
  # cp {openssl소스 디렉토리}/libcrypto.a /usr/lib
  # cd /usr/lib
  # ln -s ../../lib/libcrypto.so.0.9.8p libcrypto.so.6
  # ls -al libcrypto*
    -rw-r--r-- 1 root root 2425450 Dec  8 16:11 /usr/lib/libcrypto.a
    lrwxrwxrwx 1 root root      29 Dec  8 16:12 /usr/lib/libcrypto.so -> ../../lib/libcrypto.so.0.9.8p

 libssl 설치는 libcrypto 설치의 /lib디렉토리와 같은 방식으로 설치하면 된다.
  # cp libssl.so.0.9.8 /lib/libssl.so.0.9.8p
  # rm -rf libssl.so.6
  # ln -s libssl.so.0.9.8p libssl.so.6
  # ls -al
    - rwxr-xr-x 1 root root 279336 Oct 16  2007 /lib/libssl.so.0.9.8b
    -rwxr-xr-x 1 root root 322722 Dec  8 13:11 /lib/libssl.so.0.9.8p
    lrwxrwxrwx 1 root root     16 Dec  8 13:12 /lib/libssl.so.6 -> libssl.so.0.9.8p

3. openssl바이너리와 openssl 헤더파일 바꿔주기.
 마지막으로 openssl바이너리와 openssl 헤더파일을 기존 파일에서 대체하면 된다.
 헤더파일을 바꾸어주는 것은 추후에 있을 ssl라이브러리를 사용하는 openssh와 같은 프로그램을 
 소스 설치시 필요하기 때문에 바꾸어 준다.^^
 which openssl로 찾아서 바꾸어주면 된다.  기본적으로 /usr/bin 디렉토리 밑에 openssl파일이 있다.
 헤더파일은 /usr/include/oepnssl/ 디렉토리를 통째로 바꾸어주면 된다.
  # cp ./apps/openssl /usr/bin
  cp: overwrite `/usr/bin/openssl'? y
  # rm -rf /usr/include/openssl
  # cp -rf ./include/openssl /usr/include