새소식

반응형
Nginx

[Nginx] SSL/TLS 설정

  • -
반응형

SSL/TLS

SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인터넷상에서 데이터를 안전하게 전송하기 위해 설계된 암호화 프로토콜이다. 

SSL/TLS는  웹 브라우저와 서버 간, 또는 두 서버 간의 통신에서 데이터를 암호화하여 보안을 유지하는 데 사용된다.
통신패킷은 제 3자에 의한 탈취가 이루어질 수 있다. SSL이 적용되어 있지 않은 경우에는 패킷 내용을 쉽게 확인할 수 있지만 SSL이 적용되어 있다면 복호화 키가 있어야만 패킷의 내용을 알 수 있기 때문에 보안유지에 매우 탁월하다.


SSL은 이 분야의 원조 프로토콜이고, TLS는 후속 버전으로 SSL 3.0에 기반하고 있지만, 보안과 효율성 등 개선 사항과 변경사항이 많아 별도의 이름으로 구분된다. 

하지만, 기술적으로 연속성이 있고 많은 사람이 SSL이라는 용어에 익숙하기 때문에 SSL이라 통칭하기도 하며 SSL/TLS처럼 붙여서 부르기도 한다.

 

https

SSL이 적용된 URL의 프로토콜은 https이다

http에 보안(secure)을 의미하는 s가 붙은 형태

 

Nginx 설정 

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ssl_certificate /etc/test/full.pem; # SSL 인증서 경로
    ssl_certificate_key /etc/test/privkey.pem; # SSL 키 경로

    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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:!SHA1';
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

}

 

ssl_protocols

Enables the specified protocols.

Default: ssl_protocols TLSv1.2 TLSv1.3;

 

ssl_ciphers

Specifies the enabled ciphers.

HTTPS 통신 과정에서 사용할 암호화 알고리즘을 지정

":" 콜론을 이용해 cipher 사이를 분리

"!" 허용하지 않는 cipher

 

설정 내역 확인 

openssl s_client -connect localhost:443 -{PROTOCOL}
  - openssl s_client -connect localhost:443 -tls1_1
  - openssl s_client -connect localhost:443 -tls1_2

특정 프로토콜에 통신 유무를 확인하기 위한 명령어 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.