2010년 3월 10일 수요일

Apache에서 SSL서버의 설치

Apache에서 SSL서버의 설치

Apache서버에서의 SSL서버의 구성은 OpenSSLApache가 필요하며, 개인의 신상정보가 Web을 이용하여 전송됨으로 Apache 서버에 mod_ssl을 설치하거나 Apache + mod_SSL의 형태로 Apache서버를 설치하여 Browser와의 통신시 sniffing되지 않도록 하여야 할 것이다.
또한 자동화된 서비스를 위해서 Perl이나 php등이 필요하다. (Perl이나 PHP는 module로 설치해도 좋으며 CGI형태로 실행해도 상관이 없으나 보안을 위한 부분을 생각해보고 설치하는것이 좋을것 같다.) 인증을 요구하는 Client등의 관리를 위하여 MySQL등을 설치하는 것도 좋을것 같다. 그리고 mod_ssl의 INSTALL화일을 살펴보면 선택적으로 설치하는 화일이 있는데(mm같은것) 이것들도 필요하면 같이 설치할 수 있다.

1. OpenSSL의 설치

OpenSSL은 SSLeay를 기반으로한 공개용 암호화 라이브러리이다. 미국에서 상용으로 개발된 RSA 알고리듬을 완벽하게 호환하면서, 미국 밖에서도 사용 가능한 프리웨어이다. OpenSSL은 다음에서 구할 수 있다.
$ lynx ftp://ftp.openssl.org/source/openssl-0.9.6.tar.gz
$ gzip -d -c openssl-0.9.6.tar.gz | tar xvf -
기본적인 설치 방법은 인터넷상의 다른 패키지들처럼 다음과 같이하여 설치할수 있다.
$ ./config
$ make
$ make install

config에서 prefix를 주지 않았을 때에는 /usr/local/ssl디랙토리에 설치가 되니 다른 디랙토리에 설치를 하고자 한다면 다음과 같이 한다.
$ ./config --prefix=/usr/local \
--openssldir=/usr/local/openssl
이렇게 하면 OpenSSL의 실행화일은 /usr/local/bin에 설치되고 Certificate Service를 위한 화일들은 /usr/local/openssl아래의 디랙토리에 생성된다.
make를 실행하면 OpenSSL라이브러리(libcrypto.a와 libssl.a)와 실행화일 (openssl)이 생성되고, 라이브러리는 make를 실행한 디랙토리에, OpenSSL실행화일은 apps디랙토리에 생성된다. make를 실행하는 도중 에러가 생기면, 에러메세지를 살펴보아야 한다. 대부분 OpenSSL의 문제가 아니라고 하며, 정말로 OpenSSL의 문제라고 판단된다면 make report명령을 이용하여 출력된 내용을 openssl-bugs@openssl.org에 송신한다.
다음은 make test를 실행하여 OpenSSL이 정상적으로 동작하는지 확인한다. 실패한 내용이 있다면, CFLAGS등을 수정하고 "make clean; make"명령을 이용하여 다시 컴파일한후 make test를 실행해 본다.
모든 시험이 정상적으로 성공한다면, make install명령어를 이용하여 설치디렉토리(/usr/local/ssl이나 /usr/local/bin, /usr/local/openssl등)에 실행화일과 도움말 화일, 환경설정화일등을 설치한다. 여기까지 별 문제 없이 실행되었다면, SSL서버를 실행하기 위한 기본적인 준비는 완료된 것이다. 다음은 OpenSSL을 이용한 SSL서버운용을 위한 키생성과 환경설정을 실시한다.

2. Apache + mod_ssl + PHP4 의 설치

일반적인 Apache 와 php의 설치 방법에 큰 차이는 없으니, 여기에서는 순서만 기술하고 넘어 가도록 한다. 또한 이 내용은 mod_ssl의 INSTALL화일에 설명이 되어 있으므로 그것을 읽어보는 것이 정확할 것이다. mod_ssl은 버젼별로 Apache와 연결이 됨으로 자신이 설치하는 Apache버젼과 일치하는 mod_ssl을 설치하여야 한다. 이는 mod_ssl의 화일명을 보면 알 수가 있는데, "mod_ssl-자신버젼-아파치버젼"의 형태로 되어있다.
$ lynx http://httpd.apache.org/dist/apache_1.3.19.tar.gz
$ lynx ftp://ftp.modssl.org/source/mod_ssl-2.8.1-1.3.19.tar.gz
$ gzip -d -c apache_1.3.19.tar.gz | tar xvf -
$ gzip -d -c mod_ssl-2.8.1-1.3.19.tar.gz | tar xvf -
화일의 다운로드와 압축풀기가 끝나면 mod-ssl부터 설정을 한다.
1) mod-ssl 설정


    $ cd mod_ssl-2.8.1-1.3.19
    $ ./configure \
    --with-apache=../apache_1.3.19 \
    --with-ssl=/usr/local/ssl \
    --prefix=/usr/local/apache

2) PHP 설정

OpenSSL과 MySQL, 그리고 아파치서버를 사용가능하도록 PHP를 설정한 후 컴파일 한다.

    $ cd ../php-4.1.x
    ./configure --with-apache=../apache_1.3.x \
    --with-mysql \
    --enable-memory-limit=yes \
    --enable-debug=no
    $ make
    $ make install

3) Apache Server 설치

OpenSSL, MySQL, ModSSL, PHP의 설정이 끝났으면, 모든 기능을 아파치서버와 컴파일한다.

    $ cd ../apache_1.3.x
    ./configure --prefix=/usr/local/apache \
    --enable-module=ssl \
    --activate-module=src/modules/php4/libphp4.a \
    --enable-module=php4
    $ make
    $ make certificate
    $ make install
4) Apache 설정변경 및 구동

  • Apache 서버의 conf/httpd.conf 화일의 다음 항목을 찾아 옵션을 다음과 같이 변경한다. 받은 인증서의 -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----에 해당하는 부분을 mycert.crt로 저장하고 다음 옵션을 변경한다
    SSLCertificateFile /path/conf/ssl.crt/mycert.crt
    SSLCertificateKeyFile /path/conf/ssl.key/mycert.key
  • mycert.key는 CSR을 생성할 때 생기는 개인키로서, Thawte의 무료 CSR생성기를 통하여 CSR을 생성하셨다면, 메일로 보내졌으며, 대부분 Apache 인스톨과정에서 make certificate를 통해 생성된 개인키는 conf/ssl.key 디렉토리 아래에 저장이 된다
  • 아파치 SSL을 구동시킵니다 apache/bin/apachectl startssl
상기의 컴파일 과정을 거쳐서 생성된 Apache서버는 apachectl start명령을 이용하여 실행을 하게 되면 일반 Apache서버와 동일한 기능을 하게 되고 apachectl startssl 명령을 이용하면 mod_ssl을 이용한 https프로토콜을 사용할수 있게 된다. Client에서 사용법은 url에 "https://server/path/"라고 적게되며, 이때 Server와 Client간의 암호화 방법에 대한 협상이 이루어 지게 되고 이후에 Server와 Client간의 자료는 암호화 되어 전송이 됨으로, sniffer를 이용한 방법으로는 자료를 훔쳐볼수 없게 된다.

3. 관련 URL

댓글 없음:

댓글 쓰기