본문 바로가기

WEB - Apache 계열/설치

[Apache] Apache2.4.* 설치 & SSL 인증서 적용 (Linux)

#. 설치 참고 글

https://jjunpa.tistory.com/18

http://apache.mirror.cdnetworks.com/apr/

https://httpd.apache.org/docs/2.4/ko/programs/rotatelogs.html

 


 

#. 설치 사전 준비

 

01. Apache 설치 파일 다운로드

아래 사이트에 접속하여 다운로드 받는다

http://mirror.apache-kr.org/apache/httpd/

 


 

02. Apache 설치 전 필수 라이브러리 설치

yum 명령어를 통해 아래의 라이브러리를 다운로드 및 설치한다

yum install gcc-c++
yum install zlib-devel
yum install openssl-devel
yum install pcre-devel
yum install expat-devel

yum groupinstall "Development Tools"

 

 


 

03. Apache apr 다운로드

apr, apr-util 파일이 없으면 설치 중 에러가 발생한다.

 

아래 사이트에 접속하여 다운로드 받는다

http://apache.mirror.cdnetworks.com/apr/

 


 

#. 설치 실행

 

01. 설치 파일 압축 해제

Apache 설치 파일, Apache apr 파일을 모두 압축 해제한다.

 

압축 해제한 apr 및 apr-util 디렉토리는

마찬가지로 압축 해제한 Apache 설치 파일 디렉토리 내로 이동한다.

{Apache 설치 파일}/srclib 디렉토리 내로 이동시킨다.

 

이동 시킨 apr 및 apr-util 파일명을 변경해주어야 한다.

아래 이미지와 같이 버전명을 제거하고 라이브러리 이름만 남긴다.

 


 

02. 컴파일 명령어

압축 해제한 Apache 설치 파일 디렉토리 내에

configure 실행 파일을 확인한다.

 

아래와 같이 컴파일 명령어를 수행한다

./configure --prefix=/app/test_apache/apache_2454 --enable-mods-shared=all --enable-so --enable-rewrite --enable-proxy --enable-proxy-ajp --enable-proxy-balaner --enable-proxy-http --enable-proxy-connect --enable-ssl --with-included-apr

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

##### 주의사항 #####
--prefix 옵션에 넣는 값이 Apache 서버의 home directory가 된다

아래와 같이 옵션 적용 시
--prefix=/app/test_apache/apache_2454

Apache 서버의 home directory는
/app/test_apache/apache_2454 가 된다

 

 

정상적으로 컴파일이 완료되면

아래와 같이 build summary 내용이 출력된다.

Install prefix 내용이 곧 Apache 의 home directory 이므로 정상적으로 세팅 되었는지 필히 확인한다

 

 

오류 없이 컴파일이 완료 되었다면

아래 명령어로 설치를 완료한다

make && make install

 

 

 

아래와 같이 오류 없이 설치가 완료되었다면

 

지정한 장소에 (Install prefix 옵션)

Apache 서버가 정상적으로 생성되어 있다.

 


 

#. ErrorLog 및 AccessLog rotation 설정

관련 Apache 문서

https://httpd.apache.org/docs/2.4/ko/programs/rotatelogs.html

 

Error Log 설정

로그 파일 로테이션 설정은 아래 이미지 참고

LogLevel은 info로 수정

(설정예시)

ErrorLog "|/app/apache/apache_2454/bin/rotatelogs /app/apache/apache_2454/logs/error_log/error.log_%Y%m%d 86400 +540"

 

Access Log 설정

마찬가지로 로그 파일 로테이션 설정은 아래 이미지 참고

common 이 아닌 combined 설정이 권장된다

(설정예시)

CustomLog "|/app/apache/apache_2454/bin/rotatelogs /app/apache/apache_2454/logs/access_log/access.log_%Y%m%d 86400 +540" combined

 


 

#. openssl 활용하여 테스트용 ssl 인증서 생성하기

openssl 설치 되어있는지 아래 명령어로 확인

openssl version

 

 

httpd.conf 에서 아래 부분을 주석 해제한다.

Include conf/extra/httpd-ssl.conf

 

 

ssl 사용 위해 추가로 load 필요한 module 이 있다.

아래 내용들도 주석 해제한다.

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule setenvif_module modules/mod_setenvif.so

 

 

아래 절차대로 SSL 인증서 생성

#01. 개인키 생성
openssl genrsa -des3 -out server.key 2048
Enter pass phrase for server.key: (인증서 비밀번호)

=============================================================

#02. 인증요청서 생성
openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key: (인증서 비밀번호 입력)


(자신의 경우에 맞게 적절히 입력)
Country Name (2 letter code) [XX]:KR
State or Province Name (full name) []:Seoul
Locality Name (eg, city) [Default City]:Yeongdeungpo
Organization Name (eg, company) [Default Company Ltd]:Jmnote
Organizational Unit Name (eg, section) []:Jmnote
Common Name (eg, your name or your server's hostname) []:jmnote.com
Email Address []:web@jmnote.com


(아래의 두 줄이 나올 때는 그냥 Enter로 넘어가면 됨)
A challenge password []:
An optional company name []:


=============================================================

#03. 개인키에서 패스워드 제거
cp server.key server.key.origin
openssl rsa -in server.key.origin -out server.key
Enter pass phrase for server.key.origin: (개인키 패스워드 입력)

패스워드가 제거된 개인키 파일 server.key 가 생성된다
패스워드가 제거된 server.key는 원래 파일은 server.key.origin에 비해 용량이 작음

해당 작업을 수행하지 않을 시
Apache 서버 기동 시 마다 SSL 인증서 패스워드를 입력해야 한다

=============================================================

#04. 인증서 생성
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
서버 인증서인 secure.crt가 생성됨

=============================================================

#05. 확인
개인키 확인 : cat server.key | head -3
인증서 확인 : cat server.crt | head -3

=============================================================

 

 

httpd-ssl.conf 파일에 SSL 인증서 경로를 지정한다

#03. 인증서(server.crt) 및 개인키(server.key) 파일 경로 지정
SSLCertificateFile "/apache/apache2.4/ssl/server.crt"
SSLCertificateKeyFile "/apache/apache2.4/ssl/server.key"

 

 


 

#. 보안취약점 조치

아래 글 참고

https://hyuunchul.tistory.com/289