아파치 2.4 소스설치 openssl 업데이트 방법

1. 개요

Linux에 번들로 설치된 Apache 2.2 버전을 사용하여 운영중인 시스템에 여러 보안 취약사항 지적으로

Apache 패치 혹은 업그레이드가 필요하게 되었습니다.

기왕 하는김에~ Apache 2.4 버전으로 업그레이드 하기로 결정!

기존에 SSL 도 적용되어 있어서 (1.0.1.e 버전을 사용) 현재 가장 stable 한 버전인 1.1.0.h 로 올려보기로 했습니다.

//www.openssl.org/source/  - "The latest stable version is the 1.1.0 series."

이제 1.0.1 이하 버전은 지원하지 않거든요!

버전은 정했고~ 그럼 어떻게 설치할까요?

운영 중인 시스템에 단일 서버라 부담이 팍팍~ yum install openssl-devel 땅~ 쳐버리기엔 여러 리스크가 있으니~~

그래서 1.1.0.h 버전을 컴파일 설치하기로 합니다. (암만!)

2. OpenSSL 컴파일 설치

일단 서버에 적당한 곳에 임시 디렉토리를 생성해두고~ OpenSSL 소스를 내려받아봅니다.

(물론, OpenSSL 설치 이전에 zlib-devel 은 꼭 설치 해주셔야 해요~!)

wget //www.openssl.org/source/openssl-1.1.0h.tar.gz

소스 파일을 받고~압축을 풀고~~ 해당경로로 이동!

그리고 아래와 같이 컴파일을 합니다. 주의해서!

--prefix 에 꼭 컴파일 설치될 경로를 지정해주셔야 합니다. 안그랬다간...기존에 사용하던 버전에 엎어쳐져버리는

무시무시한 일이 기다리고 있을지도 모르니까요..ㅠ^ㅠ

저는 64bit으로 컴파일 했습니다. Configure 의 usage는 반드시 OS컴파일러를 지정해주도록 되어있어요!

맞는 OS에 해당하는 것으로 지정해주세요~~저는 linux-x86_64 로!

./Configure linux-x86_64 shared no-md2 no-mdc2 no-rc5 no-rc4 --prefix=/install/openssl
make
make install

과정이 모두 끝났으면~ 잘 설치되었나 볼까요? 버전 확인부터!

# /installer/bin/openssl version
/installer/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
#

에러가.....얘는 어디를 바라보고 있는걸까요!

libssl.so.1.1 은 여기에 있단 말이야!!!

# ls -atlr
-rw-r--r-- 1 root root 4766142 2018-05-15 15:31 libcrypto.a
-rw-r--r-- 1 root root 769600 2018-05-15 15:31 libssl.a
lrwxrwxrwx 1 root root 16 2018-05-15 15:31 libcrypto.so -> libcrypto.so.1.1
lrwxrwxrwx 1 root root 13 2018-05-15 15:31 libssl.so -> libssl.so.1.1
drwxr-xr-x 2 root root 4096 2018-05-15 15:31 pkgconfig
drwxr-xr-x 2 root root 4096 2018-05-15 15:31 engines-1.1
-rwxr-xr-x 1 root root 2800516 2018-05-15 15:31 libcrypto.so.1.1
-rwxr-xr-x 1 root root 518420 2018-05-15 15:31 libssl.so.1.1
drwxr-xr-x 4 root root 4096 2018-05-15 15:31 .
drwxr-xr-x 7 root root 4096 2018-05-15 15:31 ..
# pwd
/installer/openssl/lib

기존 라이브러리 패스에서 찾느라고 못찾는군요!

그렇담 바로 이거죠~

export LD_LIBRARY_PATH=/installer/openssl/lib

이렇게 해주면~ 아래처럼 버전 확인이 됩니다! 잘 깔렸죵?^^

# ./openssl version
OpenSSL 1.1.0h 27 Mar 2018

새로 설치할 Apache 2.4 의 구동 계정에도 LD_LIBRARY_PATH 변수를 셋팅해줘야 해요~!

.bash_profile 에 살짝 넣어두시면 되겠습니다~~~!

요런걸 또 만나기 싫으시다면요~ㅎㅎㅎ

httpd: Syntax error on line 134 of /apache2.4/conf/httpd.conf: Cannot load modules/mod_ssl.so into server: libss .so.1.1: cannot open shared object file: No such file or directory

오늘은 여기까지! :)

[root@localhost ~]# yum update -y
[root@localhost ~]# yum install -y gcc gcc-c++ expat-devel.x86_64 pcre-devel

gcc 및 관련 패키지 파일을 설치합니다.

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget //sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
[root@localhost src]# tar zxvf pcre-8.44.tar.gz

[root@localhost src]# cd pcre-8.44/
[root@localhost pcre-8.44]# ./configure --prefix=/usr/local/src
[root@localhost pcre-8.44]# make && make install


pcre 파일을 다운로드하고 컴파일합니다.

httpd.apache.org 사이트에서 apache 2.4, apr, apr-util 파일의 다운로드 링크 주소를 복사합니다.

[root@localhost pcre-8.44]# cd /usr/local/src
[root@localhost src]# wget //downloads.apache.org/httpd/httpd-2.4.46.tar.gz
[root@localhost src]# wget //downloads.apache.org/apr/apr-1.7.0.tar.gz
[root@localhost src]# wget //downloads.apache.org/apr/apr-util-1.6.1.tar.gz

[root@localhost src]# tar zxvf httpd-2.4.46.tar.gz
[root@localhost src]# tar zxvf apr-1.7.0.tar.gz
[root@localhost src]# tar zxvf apr-util-1.6.1.tar.gz

[root@localhost src]# mv apr-1.7.0 ./httpd-2.4.46/srclib/apr
[root@localhost src]# mv apr-util-1.6.1 ./httpd-2.4.46/srclib/apr-util

[root@localhost src]# cd httpd-2.4.46/
[root@localhost httpd-2.4.46]# ./configure \
--prefix=/usr/local/apache \
--with-included-apr \
--with-pcre=/usr/local/bin/pcre-config
[root@localhost httpd-2.4.46]# make && make install


apache(httpd), apr, apr-util 파일을 다운로드 및 압축 해제한 후 컴파일합니다. 

[root@localhost httpd-2.4.46]# vi /usr/local/apache/conf/httpd.conf
# ServerName gives the name and port that the server uses to identify itself. 
# This can often be determined automatically, but we recommend you specify 
# it explicitly to prevent problems during startup. 

# If your host doesn't have a registered DNS name, enter its IP address here. 
#
#ServerName www.example.com:80
ServerName localhost:80

httpd.conf 설정 파일에 ServerName을 추가합니다. 

[root@localhost httpd-2.4.46]# firewall-cmd --permanent --add-service=http 
[root@localhost httpd-2.4.46]# firewall-cmd --permanent --add-service=https 
[root@localhost httpd-2.4.46]# firewall-cmd --reload

방화벽(Firewall)이 활성화되어있을 경우 아파치 관련  http, https 트래픽이 차단될 수 있습니다. 방화벽에 서비스 허용하고 재시작합니다. 

[root@localhost httpd-2.4.46]# vi /usr/lib/systemd/system/apache.service
[Unit]
Description=Apache Service
[Service]
Type=forking
#EnvironmentFile=/usr/local/apache/bin/envvars
PIDFile=/usr/local/apache/logs/httpd.pid
ExecStart=/usr/local/apache/bin/apachectl start
ExecReload=/usr/local/apache/bin/apachectl graceful
ExecStop=/usr/local/apacher/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[root@localhost httpd-2.4.46]# systemctl daemon-reload

[root@localhost httpd-2.4.46]# systemctl enable apache
[root@localhost httpd-2.4.46]# systemctl start apache


systemctl 서비스에 아파치 서비스를 등록하고, 부팅 시 아파치가 자동 실행되도록 설정합니다.

웹브라우저에서 //<서버 IP>으로 접속하여 아파치 페이지가 출력되는지 확인합니다.

Toplist

최신 우편물

태그