SSL Server Test A등급으로 올리기
•
ssllabs.com를 통해 SSL Server Test를 한 결과 B등급이 나왔다. 해당 결과에 만족스럽지 못한 나는 Protocal Support에 문제가 있다는 것을 발견했다.
•
cerbot + let’s encrypt를 이용해 HTTPS 설정을 하게 될 경우 ssl 관련 설정들이 /etc/letsencrypt/options-ssl-nginx.conf에 저장된다.
•
그 때문에 SSL Server Test에서 B등급이 나왔다는 것을 알 수 있었다. 단순히 TLSv1와 TLSv1.1을 삭제하는 것만으로도 A등급이 나오며 문제를 해결 할 수 있었다.
•
하지만 최신 버전인 TLSv1.3도 적용할려고 할 경우
nginx: [warn] invalid value "TLSv1.3" in /etc/letsencrypt/options-ssl-nginx.conf:10
nginx: configuration file /etc/nginx/nginx.conf test failed
Bash
복사
◦
위와 같은 에러가 발생한다.
POODLE(Padding Oracle On Downgraded Legacy Encryption) 취약점
•
구식 암호화 기법을 악용할 수 있게 하는 프로토콜 다운그레이드 취약점.
BEAST(Browser Exploit Against SSL/TLS) 취약점
•
앤드 유저 브라우저에서 HTTPS 의 쿠키들을 해독하고 효과적인 타킷의 세션을 하이제킹할 수 있는 취약점.
•
주요 웹 브라우저 및 애플리케이션에 구현된 TLS 는 다운그레이드 협상 프로세스 (downgrade negotiation process)를 지원하기 때문에 서버가 최신 버전을 지원하더라도 공격자가 취약한 프로토콜을 이용할 수 있다.
TLSv1.3 적용하기
•
Ubuntu 16.04.7 LTS 버전을 사용하고 있기 때문에 단순히 apt-get으로 Nginx를 다운할 경우 nginx/1.10 버전을 다운하게 된다.
•
하지만 nginx/1.10 버전의 경우 TLSv1.3을 지원하지 않기 때문에 Nginx를 따로 업그레이드를 해줄 필요가 있다.
•
5 Minute Upgrade Nginx 1.10 to 1.15+ on Ubuntu 16.04 (Xenial) 해당 링크를 참고해 Nginx를 stable 버전인 nginx/1.16 으로 수동으로 업그레이드를 진행했다.
•
업그레이드 후 options-ssl-nginx.conf 파일의 ssl_protocols 에 TLSv1.3을 추가해주었다.
•
기존 openssl 1.0.2 버전에서는 TLSv1.3을 지원하지 않기 때문에 openssl 또한 1.1.1 버전으로 수동으로 업그레이드를 진행했다. (How to Install OpenSSL from source code on Ubuntu 16.04)
◦
업그레이드 후에 정상적으로 TLSv1.3을 지원하는 것을 확인 할 수 있다.
HSTS 설정
•
client의 browser에게 http로 어떠한 것도 load 하지 말라고 규제합니다.
•
이를 통해 http에서 https로 redirect 되는 request를 minimize 할 수 있습니다.
add_header Strict-Transport-Security "max-age=31536000" always;
•
HSTS 설정 후에 A+ 등급이 나오는 것을 확인 할 수 있다.