Apache OpenSSL 업그레이드

Jeongkuk Seo
sjk5766
Published in
6 min readJan 1, 2019

Apache 설치 시 기본적인 ssl 옵션을 줄 경우, OS에 설치 된 OpenSSL을 가지고 설치됩니다. OS의 OpenSSL의 버전이 낮아 취약할 경우, 상위 버전의 OpenSSL을 통해 Apache를 설치하는 방법에 대해 알아 보겠습니다. 설치에 사용한 Apache 버전은 2.4.37 이며 OS는 CentOS6 bin-DVD로 설치했습니다. (minimal 버전이 아닙니다.)

제가 설치한 OS의 OpenSSL 버전은 1.0.1 이고, 업그레이드 하려는 버전인 1.1.0 입니다.

[root@localhost conf]# openssl
OpenSSL> version
OpenSSL 1.0.1e-fips 11 Feb 2013 // OS 버전

아래 링크에서 버전 1.1.0 소스를 받아 설치해야 합니다.

소스를 가상머신의 CentOS로 옮기고 아래와 같이 작업합니다.

tar -zxvf openssl-1.1.0.tar.gz
cd openssl-1.1.0
./config --prefix=/home1/
make
make install

저는 기존 OS의 OpenSSL은 건드리지 않기 위해 prefix로 /home1을 주었습니다. OpenSSL이 정상 설치 되면 /home1 경로에 관련 디렉토리 들이 생성됩니다.

make install 할 때 아래와 같이 에러가 발생합니다.

pod2html: -: cannot resolve L<SSL_get_error(3)> in paragraph 11.

구글링 해보니 perl 버전을 올리니 해결했다는 글도 있던데.. stackoverflow에 질문을 올려놓은 상태입니다. 혹시 나중에라도 해결되면 왜 그런지 업데이트 하겠습니다. 더 이상한건 에러가 발생해도 정상적으로 설치가 됩니다.

[root@localhost home1]# ll
total 32
drwxr-xr-x. 15 root root 4096 Jan 1 16:46 apache
drwxr-xr-x. 15 root root 4096 Jan 1 17:00 apache2
drwxr-xr-x. 2 root root 4096 Jan 1 18:51 bin
drwxr-xr-x. 3 root root 4096 Jan 1 18:51 include
drwxr-xr-x. 4 root root 4096 Jan 1 18:51 lib
drwxr-xr-x. 4 root root 4096 Jan 1 18:52 share
drwxr-xr-x. 5 root root 4096 Jan 1 18:51 ssl
[root@localhost home1]# cd bin/
[root@localhost bin]# ll
total 656
-rwxr-xr-x. 1 root root 6147 Jan 1 18:51 c_rehash
-rwxr-xr-x. 1 root root 663341 Jan 1 18:51 openssl
[root@localhost bin]# ./openssl
OpenSSL> version
OpenSSL 1.1.0 25 Aug 2016

위에서 굵게 표시한 부분이 OpenSSL 1.1.0 버전 설치로 인해 생성된 폴더 들입니다. configure 입력 전에 CPPFLAGS를 변경하겠습니다.

export CPPFLAGS=”-I/home1/include/openssl”

CPPFLAGS로 헤더파일을 /home1/include/openssl 에서 찾으라고 명시하였습니다. 그럼 apache configure 명령 시 옵션을 변경하겠습니다.

[root@localhost httpd-2.4.37]# ./configure --prefix=/home1/apache3 --enable-module=so --enable-mods-shared=all --enable-so --enable-deflate --enable-rewrite --with-included-apr --enable-module=ssl  --enable-ssl=shared --with-ssl=/home1 --enable-ssl
[root@localhost httpd-2.4.37]# make && make install

위에서 굵게 표시한 with-ssl 옵션을 아래와 같이 사용할 경우 OS에 설치 된 OpenSSL (버전 1.0.1) 을 바라봅니다.

--with-ssl

따라서 with-ssl 옵션을 openssl 1.1.0 이 설치된 경로로 설정했습니다. 제 경우 정상적으로 install 되었고 apache 실행 전 httpd.conf와 인증서 생성하는 부분이 필요한데 맨 위에서 링크한 포스트에 작성되어 있으므로 굳이 중복하여 쓰진 않겠습니다. 아래와 같이 apache를 실행시킵니다.

/home1/apache3/bin/apachectl start

curl로 OpenSSL 버전을 확인하면 1.1.0 으로 업그레이드 된 것을 확인할 수 있습니다.

[root@localhost home1]# curl — head localhost
HTTP/1.1 200 OK
Date: Wed, 02 Jan 2019 03:12:25 GMT
Server: Apache/2.4.37 (Unix) OpenSSL/1.1.0
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: “2d-432a5e4a73a80”
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html

--

--