이전글인 ‘NGINX로 SSL을 지원하는 리버스 프록시 설정하기‘ 를 통해 SSL을 지원하는 리버스 프록시를 설정해 보았는데요. 이 세팅만으로는 Qualys SSL LABS 에서 제공하는 SSL Server Test 에서 A+등급을 받을 수가 없습니다.

참고로 SSL 인증서와 private key만 연결했을경우 F등급, 위 포스팅대로 설정했을 경우 B등급을 받을수 있는데요. 이번엔 NGINX에서 A+등급을 받을수 있는SSL 설정을 해보겠습니다. 리버스 프록시 뿐만 아니라 NGINX에서 가상호스트를 설정할때도 같으니 참고하시면 좋겠습니다.

NGINX 헤더 추가

우선 nginx.conf 파일의 http { } 구문 안에 다음의 헤더 코드를 추가합니다.

X-Frame-Options 는 페이지 안에 다른 페이지 (예를 들어 iframe)를 불러오는것에 대한 설정입니다. 옵션을 설명하면

  • SAMEORIGIN : 도메인을 기준으로 같은사이트 내에서는 프레임/iframe으로 불러올수 있지만 다른 사이트의 페이지는 불러올수 없다.
  • DENY : 모든 프레임/iframe을 무효화.
  • ALLOW-From Url : 주소를 설정하고 해당 주소는 프레임/iframe 불러오기가 가능.

입니다.

두번째줄의 X-Content-Type-Options 는 잘못된 MIME 타입이 포함된 응답을 거부하는 옵션이고 세번째줄의 X-XSS-Protection 헤더는 XSS를 통한 세션 하이잭킹을 방지해주는 역활을 합니다.

NGINX SSL 설정

아래의 코드를 ssl.conf 파일로 저장한다음 가상호스트 설정 구문인 server { } 안에 include 로 불러와 활용할수 있습니다.

ssl 프로토콜인 SSLv3과 SSLv2는 보안에 취약하기 때문에 사용하지 않고 ssl_ciphers는 브라우저 마다 암호화의 호환성을 위한 설정입니다. 그밖에 SSL 세션 캐시등은 NGINX의 권장설정입니다.

NGINX dhparam 설정

위의 코드들은 보안과 직간접적으로 영향이 있는 설정이였다면 이제부터 득점을 할수 있는 설정인 디피-헬만 파라미터 설정입니다. 물론 점수 뿐만아니라 보안도 강화가 되죠. 이 설명을 위해 윈도에서 OpenSSL 설치하기 를 포스팅 했습니다.

OpenSSL을 실행하고 dhparam 키를 생성합니다. OpenSSL로 디피-헬만 파라미터(dhparam) 키 만들기 참고.

생성된 dhparam.pem 파일을 NGINX의 SSL 설정에 넣어줍니다.

SSL 인증서 체인 설정

마지막으로 SSL 인증서 체인 설정입니다.

발급받은 인증서 (확장자 crt)와 인증기관의 중간 인증서 내용을 합쳐 체인을 만드는 것으로 텍스트 에디터에서 다음과 같이 만들어줍니다.

다시 한번 설명하자면 첫번째 —–BEGIN CERTIFICATE—– 부터 —–END CERTIFICATE—– 까지는 사이트의 인증서 부분이, 두번째 —–BEGIN CERTIFICATE—– 부터 —–END CERTIFICATE—– 까지 발급 기관의 중간인증서 내용을 복사합니다. 위 내용을 적당한 이름의 확장자 .pem (예시 : 사이트주소.pem) 으로 저장합니다.

그리고 nginx의 인증서 설정에 위에 생성한 파일을 불러옵니다.

NGINX SSL 설정 예시 코드

필자의 NGINX 설정입니다. 위의 헤더/보안 관련 코드를 ssl.conf로 저장하고 dhparam 과 인증서 체인을 불러오는 설정입니다.

qualys_ssl_lab_ssl_server_test_01위와 같이 설정해서 무료 인증서로도 A+ 등급을 받을수 있습니다.

PG

익스트림 매뉴얼 주인장 PG입니다. 다방면의 디지털 기술에 관심이 많고 삽질을 즐겨합니다. 포스트 내용중 궁금한 점이 있다면 댓글로 남겨주세요.

익스트림 매뉴얼의 모든 내용은 불펌금지 입니다. 자세한 내용은 링크를 참조하세요.

3 댓글이 있습니다.

    • 링크를 클릭하니 서버 응답이 없다고 테스트가 안되네요.

      우선 프로토콜 서포트에서 F등급을 받는 이유는 취약점 때문에 현재 사용하지 않는 SSLv3, SSLv2를 사용하도록 설정했기 때문입니다.

      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

      위처럼 SSL 설정 항목에 TLS만 사용하도록 설정하면 됩니다.

댓글이 없습니다.