01DEFINITION
한 줄로 말하면
TLS 1.0 과 1.1 은 2020~2021년에 주요 브라우저에서 전부 폐기됐습니다. 서버가 아직 이 버전으로 연결을 받아 준다면 공격자가 낮은 버전으로 끌어내리는 여지가 남고, 공공 · 금융 보안성 검토에서는 그 자체로 지적 항목이 됩니다. 원인은 대개 몇 년 전에 적힌 설정 파일 한 줄인데, 아무도 다시 들여다보지 않아서 그대로 남아 있습니다.
02RISK
없으면 무슨 일이 생기나
가장 먼저 나타나는 것은 공격이 아니라 서류입니다. 공공기관 납품, 금융권 협력사 등록, 개인정보 보호 인증 심사에서 지원 프로토콜 목록은 거의 예외 없이 확인 대상이고, TLS 1.0 이 켜져 있으면 그 자리에서 보완 요구가 나옵니다. 고쳐서 다시 제출하는 데 걸리는 시간이 계약 일정을 밀어냅니다.
기술적으로는 다운그레이드의 여지가 남습니다. 최신 브라우저는 알아서 높은 버전으로 붙지만, 중간에서 연결을 방해해 협상을 낮은 버전으로 끌어내리는 공격이 성립하려면 서버가 그 낮은 버전을 받아 준다는 전제가 필요합니다. 그 전제를 없애는 것이 이 항목입니다.
결제 관련 규정을 따라야 하는 사이트라면 이야기가 더 분명합니다. 카드 정보를 다루는 환경의 국제 기준은 2018년에 이미 TLS 1.0 사용을 금지했고, PG 사가 연동 심사에서 이것을 확인하는 경우가 있습니다.
03CHECK IT YOURSELF
직접 확인하는 방법
아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.
-
01
낮은 버전으로 일부러 접속해 본다
openssl 로 TLS 1.1 만 허용해 연결을 시도합니다. handshake failure 가 뜨면 서버가 거절한 것이고 정상입니다. 연결이 성립하고 인증서 정보가 출력되면 그 버전이 아직 열려 있습니다.
$ openssl s_client -connect example.com:443 -tls1_1 </dev/null ...:SSL alert number 70
-
02
외부 진단 도구로 전체 목록을 본다
SSL Labs 의 SSL Server Test 는 지원 프로토콜과 암호 스위트를 한 화면에 보여 주고 등급도 매깁니다. 결과 페이지가 공개로 남는 것이 신경 쓰이면 결과 비공개 옵션을 켜고 실행하십시오.
-
03
현재 설정 파일을 직접 확인한다
서버에 접근할 수 있다면 설정에서 프로토콜 지정 줄을 찾는 것이 가장 빠릅니다. 여러 vhost 에 흩어져 있고 그중 하나만 옛 설정인 경우가 흔합니다.
$ grep -rn "SSLProtocol\|ssl_protocols" /etc/httpd /etc/nginx 2>/dev/null
04HOW TO FIX
고치는 방법
서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.
mod_ssl 설정에서 낮은 버전을 전부 빼는 방식으로 적습니다. 개별 vhost 에 같은 지시자가 또 있으면 그쪽이 이기므로, 전역만 고치고 끝내면 안 됩니다.
SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLHonorCipherOrder off
이 지시자는 덮어쓰기라서 나열한 것만 허용됩니다. http 블록에 두면 하위 server 블록이 모두 물려받습니다.
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off;
1.3 은 왕복 횟수가 줄어 연결이 빨라집니다. 보안 때문에 고치는 김에 속도까지 얻는 몇 안 되는 항목이라, 서버 버전이 지원한다면 같이 켜는 편이 낫습니다. OpenSSL 1.1.1 이상이 필요합니다.
05FAQ
자주 묻는 질문
TLS 1.0 을 끄면 옛날 브라우저 사용자가 못 들어오나요
- 윈도우 7 의 기본 설정 인터넷 익스플로러와 안드로이드 4.4 이하의 기본 브라우저가 영향을 받습니다. 다만 이 환경들은 이미 보안 업데이트가 끊긴 지 오래이고, 대부분의 사이트에서 접속 비중이 통계에 잡히지 않을 만큼 작습니다. 끄기 전에 방문 통계로 확인하시면 됩니다.
TLS 와 SSL 은 다른 것인가요
- SSL 이 먼저 나왔고 TLS 가 그 후속입니다. SSL 2.0 과 3.0 은 오래전에 폐기됐고 지금 쓰이는 것은 전부 TLS 입니다. 다만 설정 지시자 이름과 인증서 상품명에는 여전히 SSL 이라는 말이 남아 있어서, 두 단어가 같은 것을 가리키는 자리가 많습니다.
호스팅을 쓰고 있어서 서버 설정을 못 고칩니다
- 공유 호스팅에서는 프로토콜 설정이 호스팅사 소관인 경우가 대부분입니다. 이때는 고객센터에 지원 프로토콜을 문의하시면 됩니다. 대형 호스팅사는 이미 TLS 1.2 이상으로 맞춰 둔 곳이 많고, 그렇지 않다면 그 자체가 이전을 검토할 근거가 됩니다.
암호 스위트도 같이 봐야 하나요
- 봐야 합니다. 프로토콜 버전이 높아도 그 안에서 쓰는 암호 조합이 낡으면 결과적으로 약한 연결이 됩니다. 다만 이것은 무료 스캔이 판정하는 범위 밖이고, 프로토콜 버전보다 판단이 까다로워 서버 환경을 같이 봐야 합니다.
GET STARTED
내 사이트는
이 항목을 통과할까요
주소만 넣으시면 이 항목을 포함해 25가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.