Home | Data Center | Contact US | Login

제목 보안서버 SSL ( Linux Apache 2.X 버전)
첨부파일 Linux (Apache 2.X 버전).pdf 작성일 2007-08-03 17:50:38
작성자 기술지원부 김 삼 수  

Apache_2.x + Mysql + Php + Zend + OpenSSL 설치
 
( 1 ) Source 파일 다운로드
( 2 ) Source 파일 압축해제
( 3 ) Apache2 설치
( 4 ) Mysql 설치
( 5 ) GD 설치
( 6 ) PHP 설치
( 7 ) ZendOptimizer 설치

( 8 ) SSL 설정 
---------------------------------------------------------------------------------------------- 
 
( 1 ) Source 파일 다운로드
 
wget은 웹에서 자동적으로 파일을 받아오는데 사용되는 유틸리티이며 HTTP, HTTPS, FTP 프로토콜을 지원합니다.
 
① httpd-2.2.4.tar.gz
다운로드 사이트 : http://httpd.apache.org/download.cgi
[root@nextline ~]# wget http://mirror.apache-kr.org/httpd/httpd-2.2.4.tar.gz

 
② mysql-4.1.22.tar.gz
다운로드 사이트 : ftp://mysql.byungsoo.net/pub/mysql/
[root@nextline ~]#
wget ftp://mysql.byungsoo.net/pub/mysql/Downloads/MySQL-4.1/mysql4.1.22.tar.gz


③ php-5.2.3.tar.gz
다운로드 사이트 : http://www.php.net/downloads.php
[root@nextline ~]#
wget http://www.php.net/get/php-5.2.3.tar.gz/from/kr2.php.net/mirror


④ gd-2.0.35.tar.gz
다운로드 사이트 : http://www.libgd.org/releases/
[root@nextline ~]# wget http://www.libgd.org/releases/gd-2.0.35.tar.gz

  
⑤ ZendOptimzer-3.3.0-linux-glibc21-i386.tar.gz
다운로드 사이트 : http://www.zend.com/
다운로드 받은 ZendOptimzer을 ftp을 이용하여 업로드 합니다.

---------------------------------------------------------------------------------------------- 
 
( 2 ) Source 파일 압축해제
 
[tar 명령어 옵션]
tar 명령어는 파일을 묶거나 풀 때 사용되는 리눅스 명령어 입니다.
c : tar 파일을 생성할 때(여러 개의 파일을 하나의 파일로 묶을 때)
v : 묶을 때나 풀어줄 때 파일들의 내용을 자세하게 보려고 할 때.
z : gzip과 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용.
x : 주어진 이름의 파일에 대하여 추출
사용법: tar [옵션] 파일명
 
① httpd-2.2.4.tar.gz
[root@nextline ~]# tar zxvf httpd-2.2.4.tar.gz

 
 ② mysql-4.1.22.tar.gz
[root@nextline ~]# tar zxvf mysql-4.1.22.tar.gz

  
③ gd-2.0.35.tar.gz
[root@nextline ~]# tar zxvf gd-2.0.35.tar.gz

 
④ php-5.2.3.tar.gz
[root@nextline ~]# tar zxvf php-5.2.3.tar.gz


⑤ ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz
[root@nextline ~]# tar zxvf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz

 
압축해제을 해제하면 아래와 같이 패키지별 소스디렉토리가 생성됩니다.
ZendOptimizer-3.3.0-linux-glibc21-i386
mysql-4.1.22
gd-2.0.35
php-5.2.3
httpd-2.2.4

 
⑥ OpenSSL 설치상태 확인
[root@nextline ~]# rpm -qa | grep openssl
openssl-0.9.7a-43.8
xmlsec1-openssl-1.2.6-3
openssl-devel-0.9.7a-43.8
위와 같이 openssl이 rpm 으로 설치되어 있는지 확인 후 설치가 되어있지 않을 수 rpm버전이나 Source 버전으로 설치하셔야 합니다.

---------------------------------------------------------------------------------------------- 
 
( 3 ) Apache2 설치
 
① 컴파일 환경설정
[root@nextline ~]# cd httpd-2.2.4
[root@nextline httpd-2.2.4]#
./configure \
--prefix=/usr/local/apache \
--enable-ssl \
--enable-rule=SHARED_CORE \
--enable-shared=max \
--enable-module=so \

[컴파일 옵션]
아파치가 설치될 경로를 지정합니다.
--prefix=/usr/local/apache
mod_ssl 을 모듈을 아파치에 올리기위한 옵션입니다.
--enable-ssl
DSO 방식으로 아파치를 컴파일 하기위한 옵션입니다.
--enable-rule=SHARED_CORE --enable-shared=max --enable-module=so

 
② 컴파일
[root@nextline httpd-2.2.4]# make

   
③ 설치
[root@nextline httpd-2.2.4]# make install

   
④ httpd.conf 파일편집
 
[vi 에디터 사용법]
사용형식: vi [옵션] [생성할 파일명/편집할 파일명]
vi 에디터는 입력모드, 명령모드, 실행모드로 구분됩니다.
입력모드: vi 편집화면에서 문자를 입력할 수 있는 모드로서 입력모드로 진입하기 위해서는 i, a, o, I, A, O, R등이 있습니다. 즉 초기 vi 편집기 모드는 명령어 모드로 진입을 하기때문에 문자를 입력하기 전에 앞의 단축키중 하나를 먼저 입력해야 원하는 문자를 입력할 수 있습니다.
명령모드: 커서이동/문자삭제/문자(열)교체/문자열검색 등을 할수 있는 모드로서 입력모드에서 편집이 완료되면 Esc키를 눌러 명령모드로 진입하면 됩니다.
실행모드: 특별한 명령어를 실행하는 모드로서 명령어모드에서 ":"(콜론)를 누르면 vi 화면 하단 좌측에 vi 특수명령어를 입력할 수 있습니다.
 
[실행모드의 일반적으로 쓰이는 특수 명령어]
q : 수정 작업이 이루어지지 않은 상태에서 vi 편집기에서 빠져나옵니다.
q! : 수정 작업이 이루어진 부분을 적용시키지 않고 vi 편집기를 강제로 빠져나옵니다.
w : 수정된 작업을 저장합니다.
wq : 수정된 작업을 저장하고 vi 편집기에서 빠져나옵니다.
초기 명령어모드-> 입력모드진입 -> 편집 -> 명령어모드 -> 실행모드 -> 종료
 
[root@nextline httpd-2.2.4]# vi /usr/local/apache/conf/httpd.conf

 
⑤ ServerName 설정
ServerName 부분에 아이피 혹은 도메인을 기입합니다.
ServerName xxx.xxx.xxx.xxx

 
⑥ 가상호스트 설정파일 편집

 
⑦ VirtualHost 편집


⑧ Apache 데몬 시작
[root@nextline httpd-2.2.4]# /usr/local/apache/bin/apachectl start
[root@nextline httpd-2.2.4]# netstat -anp | grep httpd
tcp   0  0 :::80   :::*      LISTEN      10775/httpd

---------------------------------------------------------------------------------------------- 

( 4 ) Mysql 설치
 
① 컴파일 환경설정
[root@nextline ~]# cd mysql-4.1.22
[root@nextline mysql-4.1.22]# ./configure
--prefix=/usr/local/mysql \
--with-charset=euckr \
 
[컴파일 옵션]
Mysql 이 설치될 경로를 지정하는 옵션입니다.
--prefix=/usr/local/mysql
문자셋을 한국어로 설정하는 옵션입니다.
--with-charset=euckr

 
② 컴파일
[root@nextline mysql-4.1.22]# make

 
③ 설치
[root@nextline mysql-4.1.22]# make install

 
④ mysql 데이터 디렉토리생성
[root@nextline mysql-4.1.22]# /usr/local/mysql/bin/mysql_install_db

 
⑤ 데이터 디렉토리확인
[root@nextline mysql-4.1.22]# ls /usr/local/mysql
데이터 디렉토리 [var]

 
⑥ mysql 계정생성
[root@nextline mysql-4.1.22]#usradd –M –s /sbin/nologin mysql; passwd mysql
New UNIX password : [mysql 패스워드를 지정합니다]
Retype new UNIX password : [mysql 패스워드를 재 입력합니다]

  
⑦ mysql 디렉토리 소유권변경
chown - 리눅스의 소유권 변경 명령어 입니다.
-R 옵션 - 하위 디렉토리까지 모두 적용합니다.
[root@nextline mysql-4.1.22]#chown –R mysql.mysql /usr/local/mysql

 
⑧ mysql 데몬구동
mysql를 백그라운드로 구동합니다.
[root@nextline mysql-4.1.22]#/usr/local/mysql/bin/mysqld_safe &

  
⑨ mysql 데몬 구동확인
[root@nextline mysql-4.1.22]# netstat -anp | grep mysqld
tcp  0 0 0.0.0.0:3306    0.0.0.0:*  LISTEN      1809/mysqld

  
⑩ mysql root 패스워드설정
[root@nextline mysql-4.1.22]#/usr/local/mysql/bin/mysqladmin –u root password ‘xxxxxx'

  
⑪ mysql 접속확인
[root@nextline mysql-4.1.22]#mysql –u root –p
접속이 정상적으로 이루어지며 mysql 설치가 완료된 화면입니다.

---------------------------------------------------------------------------------------------- 
 
( 5 ) GD 설치

① 컴파일 환경설정
[root@nextline ~]# cd gd-2.0.35
[root@nextline gd-2.0.35]# ./configure --prefix=/usr/local/gd2
[컴파일 옵션]
GD가 설치될 경로를 지정하는 옵션입니다.
--prefix=/usr/local/gd2

 
② 컴파일
[root@nextline gd-2.0.35]# make

  
③ 설치
[root@nextline gd-2.0.35]# make install

  
④ 설치확인
[root@nextline gd-2.0.35]# ls /usr/local/

 
----------------------------------------------------------------------------------------------   
( 6 ) PHP 설치

① 컴파일 환경설정
[root@nextline ~]# cd php-5.2.3
[root@nextline php-5.2.3]# ./configure --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache/bin/apxs \
> --with-config-file-path=/usr/local/lib \
> --with-mysql=/usr/local/mysql \
> --with-gd=/usr/local/gd2 \
> --enable-gd-native-ttf \
> --with-freetype-dir=/usr \
> --with-zlib \
> --with-iconv \
> --with-imap \
> --with-imap-ssl \
> --with-kerberos \
> --enable-mbstring \
> --enable-track-vars \
> --enable-ftp \
> --disable-debug
 
[컴파일 옵션]
 
--prefix=/usr/local/php
php 설치경로를 지정합니다.
 
--with-apxs=/usr/local/apache/bin/apxs
공유된 apache 모듈을 연동하기 위한 옵션입니다.
 
--with-config-file-path=/usr/local/lib
php설정파일 php.ini파일이 존재할 위치를 지정합니다.
 
--with-mysql=/usr/local/mysql
Mysql과 연동하기 위한 옵션입니다.
 
--with-gd=/usr/local/gd2
php에서 gd라이브러리관련 함수를 사용하여 gd를 지원하기 위한 옵션입니다.
 
--enable-gd-native-ttf
GD 라이브러리에서 FreeType를 함하는 옵션입니다.
 
–-with-freetype-dir=/usr
freetype2를 지원하기 위한 옵션입니다.
 
--with-zlib
데이터압축 라이브러리로서 php에서 zlib을 지원하기 위한 옵션입니다.
 
--with-iconv
인코딩 변환프로그램으로 iconv를 지원하기 위한 옵션입니다.
 
--with-imap
pop 과 함께 메일수신데몬으로 사용되는 서비스로서 imap를 지원하기 위한 옵션입니다.
 
--with-kerberos
Kerberos는 클라이언트 서버 애플리케이션의 입증을 제공하기 위하여 상칭적인 암호법을 이용하는 네트워크 인증 프로토콜로서 kerberos를 지원하기 위한 옵션입니다.
 
--enable-mbstring
multi-byte문자를 지원하기 위한 옵션으로 많은 언어를 표현하기 위하여 이용되며, php에서 mbstring를 지원하기 위한 옵션입니다.
 
--enable-track-vars
HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어있는 GET /
POST / cookie 변수들이 어디로부터 왔는지 기억하게 만듭니다. 이 옵션은 단지 Default 값 을 정하는 것뿐이며, 후에 configuration file의 track_vars 지시자에 의해
Enable/Disable 할 수 있습니다.
 
--enable-ftp
php에서 ftp관련 함수를 지원하기 위한 옵션입니다.
 
--enable-debug
Zend Optimizer를 사용하기 위해서는 debugging을 사용하지 않습니다.
 
[그외 옵션]
 
--enable-sockets
소켓(socket) 파일을 사용하기 위한 옵션입니다.
 
--with-language-korean
한국어를 사용하기 위한 옵션입니다.
 
--enable-dba=shared
DBA를 동적으로 적재할 수 있는 공유 모듈 형태로 만드는 옵션입니다.
 
--enable-gdbm[=DIR]
GDBM 지원을 포함하는 옵션입니다.
 
--enable-memory-limit
php에서 메모리 제한 기능을 지원하는 옵션입니다.

  
② 컴파일
[root@nextline php-5.2.3]#make

  
③ 설치 테스트
[root@nextline php-5.2.3]#make test

  
④ report 받기
설치 테스트 파일을 메일로 받기 원하시면 화면과 같이 메일주소를 입력합니다.
테스트파일이 필요하지 않으시면 [n] 입력합니다.

 
⑤ 설치
[root@nextline php-5.2.3]#make install

  
⑥ php 설정파일 복사
[root@nextline php-5.2.3]#cp php.ini-dist /usr/local/lib/php.ini

  
⑦ 아파치 설정파일 편집
[root@nextline php-5.2.3]#vi /usr/local/apache/conf/httpd.conf

  
⑧ PHP 인덱스파일 설정

    DirectoryIndex index.html index.htm index.php index.jsp


 
⑨ AddType 설정
AddType application/x-httpd-php .php .php4 .php3

  
⑩ 설정파일 적용
[root@nextline php-5.2.3]#/usr/local/apache/bin/apachectl restart

---------------------------------------------------------------------------------------------- 
 
( 7 ) ZendOptimizer 설치
 
① install.sh 실행
[root@nextline ~]# cd ZendOptimizer-3.3.0-linux-glibc21-i386
[root@nextline ZendOptimizer-3.3.0-linux-glibc21-i386]# ./install.sh

 
② OK

 
③ Zend Optimizer 라이센스 화면입니다. [EXIT]

   
④ 라이센스 동의 화면입니다. [Yes]

  
⑤ Zend 설치경로를 지정하는 화면입니다. /usr/local/Zend(절대경로) 확인 후 를 선택합니다.
Zend Optimizer 설치 경로가 자동 지정되지 않을 시 수동으로 /usr/local/Zend 경로를
지정해 주시면 됩니다. (Linux OS의 응용프로그램은 기본 /usr/local에 설치되기 때문에
/usr/local/Zend로 지정합니다.)
[OK]

   
⑥ php.ini의 경로를 지정하는 화면입니다. php설치 시 php.ini 파일이 /usr/local/lib에
생성되기 때문에 /usr/local/lib(절대경로) 지정합니다.
[OK]

 
⑦ Zend Optimizer + Apache 연동할 것인지를 묻는 화면입니다
[Yes]

 
⑧ apaachectl의 경로를 지정하는 화면입니다.
[OK]

 
⑨ php.ini 파일의 php.ini-zend_optimizer.bak 백업파일을 생성하는 화면이며, 생성위치는 php.ini 파일이 존재하는 /usr/local/lib 경로에 생성됩니다.
[OK]

 
⑩ Zend Optimizer 설치완료 화면입니다
[OK]

 
⑪ apache 재 시작을 묻는 화면입니다
[Yes]

 
⑫ Apache 재 시작 성공
[OK]

 
⑬ phpinfo 파일생성
[root@nextline ~]#vi /usr/local/apache/htdocs/php_test.php

 
⑭ phpinfo 코드설정
phpinfo();
?>

 
⑮ APM 연동확인
http://아이피/php_test.php

---------------------------------------------------------------------------------------------- 
   
( 8 ) SSL 설정

① 개인키 생성
[root@nextline ~]# cd /usr/local/src
1024바이트의 암호화 개인키를 생성합니다.
[root@nextline src]# openssl genrsa 1024 > nextline.co.kr.key

 
 
② CSR 생성
[root@nextline src]# openssl  req –new –key nextline.co.kr.key > nextline.co.kr.csr


 
 
③ CSR  정보입력
Country Name (국가코드입력) [GB]:KR
State or Province Name (시/도의 전체이름 입력) [Berkshire]: Seongnam Gyeonggi-do
Locality Name (시,구,군 등의 이름 입력) [Newbury]: Yatap-dong Bundang-gu
Organization Name (회사이름 입력) [My Company Ltd]:nextline
Organizational Unit Name (부서명) []:Technological Support Department
Common Name (인증받을 도메인 입력) []:nextline.co.kr
Email Address (발급 인증서를 수신할 이메일 입력)[]:ask@nextline.co.kr
추가정보는 입력은 선택사항이므로 입력을 하지 않으시려면 Enter 입력
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: Enter
An optional company name []: Enter
 
[CSR 항목에 대한 설명]
Country Name : 이것은 두 자로 된 ISO 형식의 국가 코드입니다.
State or Province Name : 시 이름을 입력해야 하며 약어를 사용할 수 없습니다.
Locality Name : 이 필드는 대부분의 경우 생략이 가능하며 업체가 위치한 곳를 나타냅니다.
Organization : 사업자 등록증에 있는 회사명과 일치되는 영문회사명을 입력하시면 됩니다.
Organization Unit : "리눅스 관리팀", "윈도우 관리팀" 등과 같이 업체의 부서를 입력할 수 있습니다.
Common Name : 인증받을 도메인주소를 입력하시면 됩니다.
이 정보로 웹 사이트를 식별하므로 호스트 이름을 변경할 경우 다른 디지털 ID를 요청해야 합니다. 호스트에 연결하는 클라이언트 브라우저가 디지털 ID의 이름과 URL이 일치하는지를 확인합니다.
 
[CSR 항목 입력시 주의사항]
Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다. 
Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다. 
CSR 항목에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 68 문자를 넣을 수 없습니다. 
CSR 생성후 서버에 개인키 (Private Key) 가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업받아 두셔야 합니다.
정보입력과정 마지막에 나오는 A challenge password 와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.

 
④ CRT 생성
[root@nextline src]# openssl req –x509 –key nextline.co.kr.key –in nextline.co.kr.csr > nextline.co.kr.crt

 
⑤ 생성키 확인

 
⑥ 생성키를 저장할 디렉토리 생성
[root@nextline src]#mkdir /usr/local/apache/conf/ssl.crt
[root@nextline src]#mkdir /usr/local/apache/conf/ssl.key
[CRT/KEY] 키 값을 위에서 생성한 디렉토리 경로로 이동합니다.
[root@nextline src]#mv nextline.co.kr.crt /usr/local/apache/conf/ssl.crt/
[root@nextline src]# mv nextline.co.kr.key/usr/local/apache/conf/ssl.key

 
⑦ 아파치 설정파일 편집
[root@nextline src]#vi /usr/local/apache/conf/httpd.con

 
⑧ SSL 설정파일 주석제거
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

 
⑨ SSL 설정파일 편집
[root@nextline src]#vi /usr/local/apache/conf/extra/httpd-ssl.conf

 
⑩ VirtualHost 도메인설정

DocumentRoot "/home/nextline/public_html"
ServerName nextline.co.kr
SSLCertificateFile /usr/local/apache/conf/ssl.crt/nextline.co.kr.crt [인증서 파일경로]
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key [개인키 파일경로]

   
httpd-ssl.conf 기본설정내용

DocumentRoot "/home/nextline/public_html"
ServerName nextline.co.kr
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache/conf/ssl.crt/nextline.co.kr.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key

    SSLOptions +StdEnvVars


    SSLOptions +StdEnvVars

BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
 
CustomLog /usr/local/apache/logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

 
모든 보안 가상 호스트들은 대개 httpd.conf 파일의 끝부분에 위치한 와 사이에 포함되어야 합니다.
 
SSL에 대한 가장 중요한 지시는 SSLEngine on, SSLCertiFficateFile, SSLCertificateKeyFile과 많은 경우에 있어 SSLCACertificateFile 지시자입니다.
 
SSL 엔진
SSLEngine on
이 지시는 SSL을 구동하는 ModSSL의 명령입니다.
SSLCertificateFile
SSLCertificateFile은 인증서 위치와 그 이름을 아파치에게 알려줍니다.
 
SSLCertificateKeyFile
SSLCertificateKeyFile은 비밀키 이름가 그 위치를 아파치에게 알려주며 여기서 정의된 디렉토리는 단지 루트에게만 읽기/쓰기 허가권이 주어져야 하며 다른 누구도 이 디렉토리에 액세스하지 못해야 합니다.
 
SSLCACertificateFile
SSLCACertificateFile지시는 Intermediate(root) 인증서 위치를 아파치에게 알려줍니다.
 
⑪ SSL 설정파일 적용
[root@nextline src]#vi /usr/local/apache/bin/apachectl restart

 
⑫ SSL 443 포트확인
[root@nextline src]# netstat -anp | grep httpd
tcp 0 0 :::80  :::*  LISTEN      2215/httpd
tcp 0 0 :::443 :::*  LISTEN      2215/httpd

 
⑬ https 접속테스트
https://nextline.co.kr 접속을 하시면 아래와같이 보안경고 창이 보여집니다.
[예] – [Enter]

 
⑭ SSL 보안적용 화면
SSL 적용이 완료되었으므로 공인인증센터를 이용하여 인증서를 발급합니다.


  멀티도메인 CSR(인증 신청서) 생성 및 CRT(인증서) 적용방법
  IceSword을 이용한 루트킷 탐지 및 삭제





회사소개 개인정보취급방침 이용약관 이메일주소 무단수집거부 CONTACT US IDC 약도
회사소개 개인정보취급방침 이용약관 이메일주소 무단수집거부 CONTACT US IDC 약도 회사소개 개인정보취급방침 이용약관 이메일주소 무단수집거부 CONTACT US IDC 약도