본문 바로가기
MAKESITE
무료 스캔 문의하기 로그인

점검 항목 · 보안

구버전 TLS 프로토콜

몇 년 전에 적은 설정 파일 한 줄이 그대로 남아 있는 경우가 대부분입니다. 지금 당장 사고가 나지는 않지만, 심사와 계약에서 먼저 걸립니다.

심각도 높음 보안 무료 스캔 판정 항목 /check/tls-version

01DEFINITION

한 줄로 말하면

TLS 1.0 과 1.1 은 2020~2021년에 주요 브라우저에서 전부 폐기됐습니다. 서버가 아직 이 버전으로 연결을 받아 준다면 공격자가 낮은 버전으로 끌어내리는 여지가 남고, 공공 · 금융 보안성 검토에서는 그 자체로 지적 항목이 됩니다. 원인은 대개 몇 년 전에 적힌 설정 파일 한 줄인데, 아무도 다시 들여다보지 않아서 그대로 남아 있습니다.

02RISK

없으면 무슨 일이 생기나

가장 먼저 나타나는 것은 공격이 아니라 서류입니다. 공공기관 납품, 금융권 협력사 등록, 개인정보 보호 인증 심사에서 지원 프로토콜 목록은 거의 예외 없이 확인 대상이고, TLS 1.0 이 켜져 있으면 그 자리에서 보완 요구가 나옵니다. 고쳐서 다시 제출하는 데 걸리는 시간이 계약 일정을 밀어냅니다.

기술적으로는 다운그레이드의 여지가 남습니다. 최신 브라우저는 알아서 높은 버전으로 붙지만, 중간에서 연결을 방해해 협상을 낮은 버전으로 끌어내리는 공격이 성립하려면 서버가 그 낮은 버전을 받아 준다는 전제가 필요합니다. 그 전제를 없애는 것이 이 항목입니다.

결제 관련 규정을 따라야 하는 사이트라면 이야기가 더 분명합니다. 카드 정보를 다루는 환경의 국제 기준은 2018년에 이미 TLS 1.0 사용을 금지했고, PG 사가 연동 심사에서 이것을 확인하는 경우가 있습니다.

03CHECK IT YOURSELF

직접 확인하는 방법

아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.

  1. 01
    낮은 버전으로 일부러 접속해 본다

    openssl 로 TLS 1.1 만 허용해 연결을 시도합니다. handshake failure 가 뜨면 서버가 거절한 것이고 정상입니다. 연결이 성립하고 인증서 정보가 출력되면 그 버전이 아직 열려 있습니다.

    $ openssl s_client -connect example.com:443 -tls1_1 </dev/null
    ...:SSL alert number 70
  2. 02
    외부 진단 도구로 전체 목록을 본다

    SSL Labs 의 SSL Server Test 는 지원 프로토콜과 암호 스위트를 한 화면에 보여 주고 등급도 매깁니다. 결과 페이지가 공개로 남는 것이 신경 쓰이면 결과 비공개 옵션을 켜고 실행하십시오.

  3. 03
    현재 설정 파일을 직접 확인한다

    서버에 접근할 수 있다면 설정에서 프로토콜 지정 줄을 찾는 것이 가장 빠릅니다. 여러 vhost 에 흩어져 있고 그중 하나만 옛 설정인 경우가 흔합니다.

    $ grep -rn "SSLProtocol\|ssl_protocols" /etc/httpd /etc/nginx 2>/dev/null

04HOW TO FIX

고치는 방법

서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.

Apache — TLS 1.2 이상만 받는다

mod_ssl 설정에서 낮은 버전을 전부 빼는 방식으로 적습니다. 개별 vhost 에 같은 지시자가 또 있으면 그쪽이 이기므로, 전역만 고치고 끝내면 안 됩니다.

SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLHonorCipherOrder off
nginx — ssl_protocols 를 다시 적는다

이 지시자는 덮어쓰기라서 나열한 것만 허용됩니다. http 블록에 두면 하위 server 블록이 모두 물려받습니다.

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
TLS 1.3 을 같이 켠다

1.3 은 왕복 횟수가 줄어 연결이 빨라집니다. 보안 때문에 고치는 김에 속도까지 얻는 몇 안 되는 항목이라, 서버 버전이 지원한다면 같이 켜는 편이 낫습니다. OpenSSL 1.1.1 이상이 필요합니다.

주의. 설정을 바꾸기 전에 방문자 통계에서 아주 오래된 브라우저의 비중을 확인하십시오. 윈도우 7 의 기본 인터넷 익스플로러나 안드로이드 4 대의 기본 브라우저는 TLS 1.2 를 쓰지 못해 접속이 끊깁니다. 대부분의 사이트에서 이 비중은 0에 가깝지만, 특정 업종에서는 그렇지 않습니다.

05FAQ

자주 묻는 질문

TLS 1.0 을 끄면 옛날 브라우저 사용자가 못 들어오나요

윈도우 7 의 기본 설정 인터넷 익스플로러와 안드로이드 4.4 이하의 기본 브라우저가 영향을 받습니다. 다만 이 환경들은 이미 보안 업데이트가 끊긴 지 오래이고, 대부분의 사이트에서 접속 비중이 통계에 잡히지 않을 만큼 작습니다. 끄기 전에 방문 통계로 확인하시면 됩니다.

TLS 와 SSL 은 다른 것인가요

SSL 이 먼저 나왔고 TLS 가 그 후속입니다. SSL 2.0 과 3.0 은 오래전에 폐기됐고 지금 쓰이는 것은 전부 TLS 입니다. 다만 설정 지시자 이름과 인증서 상품명에는 여전히 SSL 이라는 말이 남아 있어서, 두 단어가 같은 것을 가리키는 자리가 많습니다.

호스팅을 쓰고 있어서 서버 설정을 못 고칩니다

공유 호스팅에서는 프로토콜 설정이 호스팅사 소관인 경우가 대부분입니다. 이때는 고객센터에 지원 프로토콜을 문의하시면 됩니다. 대형 호스팅사는 이미 TLS 1.2 이상으로 맞춰 둔 곳이 많고, 그렇지 않다면 그 자체가 이전을 검토할 근거가 됩니다.

암호 스위트도 같이 봐야 하나요

봐야 합니다. 프로토콜 버전이 높아도 그 안에서 쓰는 암호 조합이 낡으면 결과적으로 약한 연결이 됩니다. 다만 이것은 무료 스캔이 판정하는 범위 밖이고, 프로토콜 버전보다 판단이 까다로워 서버 환경을 같이 봐야 합니다.
여기까지는 항목 일반론입니다. 무엇이고 왜 문제이며 어떻게 고치는지는 감출 이유가 없어 그대로 적었습니다. 리포트에 들어가는 것은 귀사 사이트에서 실제로 어떤 값이 나왔는지 — 어느 주소의 어느 응답인지, 그 환경에서 어떤 순서로 적용해야 하는지, 예상 공수가 얼마인지입니다. 이 페이지만 보고 직접 고치셔도 되고, 실제로 그러시라고 적어 두었습니다.

GET STARTED

내 사이트는
이 항목을 통과할까요

주소만 넣으시면 이 항목을 포함해 25가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.