SSL Lab 에서 A 등급 받는 설정입니다 (NGINX)


기존에 Let’s Encrypt 편하게 사용했는데 올해 가을에 만료/업데이트 되면서 호환성이 많이 떨어진다고 해서요.

결국 유료 SSL 인증서를 구매할 수밖에 없게 되었네요. (저는 sslcert 에서 구매했습니다. 저렴한게 장땡이라는 분이 여기 좋은거 같아요. 사용법도 간편하네요.)

그런데 유료 인증서를 웹서버에 그냥 적용하니까 SSL Lab ( https://www.ssllabs.com/ssltest/ ) 테스트시에 B 등급으로 떨어지더군요. 무료 인증서로 할 때는 A 등급이었는데…;;

그래서 몇 번 Let’s Encrypt 꺼 설정 가져와서 조금 수정했는데 아래와 같이 하니까 다시 A 등급나오네요. 참고하시기 바래요 ^^

우분투 기준 /etc/nginx/sites-enabled/ 내에 있는 가상호스트 설정파일 내용중 SSL 설정 부분을 아래와 같이 수정하시면 됩니다.

server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    ssl_certificate_key /etc/ssl/private/domain-private.key.pem;
    ssl_certificate /etc/ssl/certs/domain.ca-bundle.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";

 
    server_name domain.name;

    ...
}

이렇게 설정하고 잘 살고 있었는데요..

헉..

(추가) 오래된 브라우저 호환 문제

최근 어떤 고객이 인터넷 익스플로러로 사이트에 접속하면 ‘이 페이지를 표시할 수 없습니다.’ 라는 문구와 함께 사이트 접속이 안되는 이슈가 발생하였는데요.

원인은 오래된 브라우저(윈도우즈7 익스플로러9 등등)와 NginX 웹서버의 SSL 설정에 있습니다. 위와 같이 높은 보안수준의 등급으로 올리려면 호환성이 떨어지게 되더군요.

잘 열리는 네이버나 이런 곳은 실제 SSL Server Test 를 실행해보면 B등급정도 나옵니다.

호환성이 중요한 웹사이트의 경우 아래와 같이 웹서버 SSL 설정을 다운그레이드해서 사용해야 합니다.

server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    ssl_certificate_key /etc/ssl/private/domain-private.key.pem;
    ssl_certificate /etc/ssl/certs/domain.ca-bundle.pem;
    ssl_protocols SSLv3 TLSv1 SSLv2 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP";
 
    server_name domain.name;

    ...
}

위와 같이 설정하고 다시 SSL Lab 에가서 테스트하면 B 등급이 나옵니다.

대신에 윈도우즈 7의 인터넷 익스플로러9에서도 페이지가 잘 열리게 됩니다.

어떻게 운영할 지는 선택하기 나름이겠네요.