[lighttpd] TLSv1.0, TLSv1.1 비활성화하기 (TLSv1.2 Only)

2019. 8. 22. 20:08Programming/Server

반응형

lighttpd를 사용하여 TLSv1.0, TLSv1.1을 사용하는 방법은 버전에 따라 갈리게 된다.
[Docs SSL, lighttpd] 문서를 살펴보면 ssl.openssl.ssl-conf-cmd라는 녀석이 있다. lighttpd를 빌드할 때 openSSL을 사용하도록 빌드했다면, 이 옵션을 이용해서 openssl 설정 명령어를 설정해두는 게 가능하다. 문서의 예제에도 나와있듯이, TLSv1.2만 사용하고싶은 경우에는 아래와 같이 설정해두면 된다.

ssl.openssl.ssl-conf-cmd=("Protocol" => "-ALL, TLSv1.2")

 

명령어를 보자마자 한눈에 알 수 있겠지만, 사족을 붙이자면 모든 프로토콜을 사용하지 않도록 설정한 뒤 TLSv1.2를 사용하도록 선언한다. 이렇게 되면 TLSv1.2만 사용 가능한 상태가 된다. ssl.openssl.ssl-conf-cmdlighttpd 1.4.45버전부터 사용이 가능하지만, 그렇다고 상위 버전에서 모두 사용 가능한 건 아니다. 경우에 따라서는 mod_openssl에서 ssl.openssl.ssl-conf-cmd를 사용할 수 없다고 에러를 뱉는데, 그게 하필 내 경우였다. ^ ㅈ^) 문서에서 버전을 확인하고 lighttpd 크로스 컴파일 없이도 간단히 해결할 수 있겠다며 겅충겅충 뛰고 있었는데, 왜 하필 이게 내 경우란 말인가.

 

몇 년 전에도 nginx를 크로스 컴파일하느라 한 달간 머리를 싸맸던 기억이 남아, 크로스 컴파일만 생각하면 머리가 아파오는 것 같아 다른 방법을 모색해봤다. 구버전의 경우에는 ssl.cipher-list 옵션을 이용해서 TLSv1.2를 제외한 프로토콜이 동작하지 않도록 설정하는게 가능하다. 버전이 올라갈수록 프로토콜에서 사용하는 암호화 방법이 복잡해지기 때문에, TLSv1.2가 지원하는 암호화 방법들만 리스트에 남겨두면 자연스럽게 이하 버전은 지원하지 않게 되는 것이다.

 

ssl.cipher-list 옵션을 이용해서 사이퍼 리스트를 설정하게 되는 경우 ssl.honor-cipher-order의 기본값은 자동으로 enable이 되지만, 그래도 명시적으로 ssl.honor-cipher-order값을 enable로 설정해주도록 하자. 그리고 다음과 같이 설정하면, TLSv1.2만 동작하게 된다.

ssl.cipher-list = "TLSv1.2:!aNULL:!eNULL:!DSS"

 

이상하게 cipher list로 검색하면 잘 안나온단 말이지... ' ㅅ')-3

참고한 글:

반응형