Page tree


개요

RedHat Linux 나 CentOS 7 은 안정성을 위해 엄격한 패키지 정책을 준용하다 보니 패키지 업데이트가 굉장히 느린 단점이 있습니다.


예로 새로 지정된 TLS 1.3 표준을 적용하려면 OpenSSL 1.1 이상이 필요하지만 정식 패키지에는 openssl 1.0.2 만 포함되어 있으므로 TLS1.3 을 사용할 수 없습니다.


개인적으로는 시스템 관리의 편리함때문에 사전 빌드된 패키지 설치를 선호하지만 이런 경우에는 소스를 내려 받아서 직접 설치하는 방법밖에는 없습니다.


TL;DR

아래는 컴파일 절차를 정리한 shell script 입니다.

 Click here to expand...


사전 준비

소스를 컴파일해야 하므로 컴파일러와 make 등 개발 도구를 사전에 설치해야 하며 아래 명령어를 실행하면 됩니다.

$ sudo yum groupinstall "Development tools"


OpenSSL 1.1 설치


  1. https://www.openssl.org/source/ 에 연결해서 1.1 대의 마지막 버전 소스를 다운 받습니다. 이 글을 쓰는 시점에서는 1.1.1b 입니다.

    $ OPENSSL=openssl-1.1.1b.tar.gz
    $ wget https://www.openssl.org/source/${OPENSSL}
  2. 압축을 해제하고 해당 폴더로 이동합니다.

    $ tar zxvf ${OPENSSL}
    $ cd $(basename ${OPENSSL} .tar.gz)
  3. build 환경을 구성합니다. openssl 에 의존적인 패키지가 많으므로 /usr/local 에 설치하고 공유 라이브러리를 만들기 위해 shared 옵션도 추가합니다.

    $ ./config shared no-idea no-md2 no-mdc2 no-rc5 no-rc4 --prefix=/usr/local/

    오래 됐거나 특허가 걸린 알고리즘을 제외하기 위해 no-idea no-md2 no-mdc2 no-rc5 no-rc4 를 추가합니다.

  4. 컴파일과 테스트를 수행합니다.

    $ make && make test
  5. 정상적으로 컴파일이 끝났으면 openssl 을 설치합니다.

    $ sudo make install

    make test 에서 "Can't locate Test/Harness.pm in @INC" 에러 메시지를 내고 실패한다면 다음 패키지를 설치합니다.


    $ sudo yum install perl-Test-Harness
  6. 라이브러리를 잘 찾도록 설정 파일에 추가합니다.

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64/
  7. 정상적으로 설치됐는지 확인합니다.

    $ /usr/local/bin/openssl version
    
    OpenSSL 1.1.1b  26 Feb 2019

Nginx 설치

  1. https://nginx.org/en/download.html 에서 마지막 버전을 다운 받습니다.  이 글을 쓰는 시점에서는 1.15.9 가 마지막입니다.

    $ NGINX=nginx-1.15.9.tar.gz
    
    $ wget https://nginx.org/download/${NGINX}
  2. 압축을 풀고 해당 폴더로 이동합니다.

    $ tar zxvf ${NGINX}
    $ cd $(basename $NGINX .tar.gz)
  3. ./configure 스크립트로 환경을 구성합니다. 복잡하므로 아래 gist 를 참고하며 주의할 점은 ./configure 의 마지막 줄의 --with-openssl 에는 위에서 다운로드 받은 openssl 의 소스 경로를 설정합니다.

     Click here to expand...

  4. 컴파일을 수행합니다.

    $ make
  5. 컴파일된 바이너리를 설치합니다.

    $ sudo make install

    .

  6. nginx 를 실행해서 버전을 확인합니다.

    $ nginx -v
    
    
    nginx version: nginx/1.15.9
  7. 설치가 완료되었으면 nginx 의 설정에 다음 내용을 넣고 재구동한 후에 https://www.ssllabs.com/ 에서 TLS1.3 이 제대로 설정되었는지 확인합니다.

    ssl_protocols TLSv1.2 TLSv1.3;

Ref