42 SEOUL/배운 것들 정리

[42SEOUL/ft_server] SSL protocol

hi._.0seon 2021. 2. 3. 17:31
반응형

ft_server 과제는 여러가지 서비스가 동작하는 서버를 구현해야하는 과제인데, Nginx를 사용하여 하나의 도커 컨테이너에서만 웹 서버 설정, OS로는 debian buster를 사용하여 워드프레스 웹사이트, phpMyAdmin 기능, MySQL 이 함께 동작하도록 해야 한다.

또한 SSL protocol을 사용할 수 있어야 하고, URL에 따라 서버가 올바른 웹 사이트로 리다이렉션되도록 해야하고, 비활성화 가능한 자동 인덱스로 실행되고 있는지 확인해야 한다.

 

워드프레스, MySQL 외에는 이해하고 있는 것이 없어서 먼저 SSL 프로토콜을 공부했다!

 

1. SSL

Secure Socket Layer

보안 소켓 계층을 말하는 것이다. 인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신 프로토콜이다.

 

전자상거래 등의 보안을 위해 넷스케이프에서 처음 개발되었고, 나중에는 인터넷 상의 표준 프로토콜로 자리매김 하면서 TLS(Transport Layer Security)로 표준화 되었다.


암호화 기반 인터넷 보안 프로토콜

인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 넷스케이프가 개발. TLS 암호화의 전신

 

SSL/TLS를 사용하는 웹사이트의 URL에는 "HTTP" -> "HTTPS" 가 있다

2. SSL/TLS 작동

 

  • SSL은 높은 수준의 개인정보 보호를 위해, 웹에서 전송되는 데이터를 암호화
  • 두 통신 장치 사이에 핸드셰이크라는 인증 프로세스를 통해 두 장치의 ID 확인
  • SSL은 데이터 무결성을 위해 데이터에 디지털 서명하여 데이터가 의도된 수신자에 도착하기 전에 조작되지 않았다는 것을 확인

3. SSL/TLS 가 중요한 이유

웹 상의 데이터는 메시지를 가로채면 누구나 볼 수 있는 일반 텍스트 형태로 전송된다. 비밀번호나 신용카드 번호가 어떤 조작도 없이 누구나 보고 읽을 수 있는, 도용 가능한 상태로 전송되는 것이다.

 

SSL은 이 문제를 해결하기 위해 개발된 것이다. 사용자와 웹 서버 사이를 이동하는 모든 데이터를 암호화하여, 누군가 데이터를 가로채더라도 무작위 문자만 볼 수 있게 한다.

 

SSL은 특정한 유형의 사이버 공격도 차단한다. SSL은 웹서버를 인증하는데, 공격자들이 사기를 치기 위한 가짜 웹사이트를 만드는 일이 있기 때문에 인증이 중요하다.

또한 공격자가 전송 중인 데이터를 조작하지 못하게 막기도 한다.

4. SSL 인증이란?

SSL은 SSL 인증서(TLS 인증서)가 있는 웹사이트만 실행할 수 있다. SSL 인증서는 사람의 신원을 확인하는 신분증 같은 역할.

SSL 인증서는 웹사이트나 애플리케이션 서버가 웹에 저장하고 표시함

 

SSL 인증서에 포함된 가장 중요한 정보 -> 웹사이트의 "공개키"

공개키 덕분에 암호화가 가능

 

사용자의 장치는 공개키를 보고 이를 이용하여 웹서버와 안전한 암호화 키를 수립.

웹 서버에도 기밀로 유지하는 개인 키가 있다. 개인 키는 공개키로 암호화된 데이터를 해독하는데 사용됨

5. SSL 인증서 유형

단일 도메인

단 하나의 도메인에 적용됨

 

와일드카드

단 하나의 도메인에 적용되지만, 도메인의 하위 도메인도 포함됨

ex) www.cloudflare.com  , blog.cloudfare.com, developers.cloudflare.com을 포함할 수 있다.

 

멀티 도메인

관련되지 않은 다수의 도메인에 적용될 수 있다

 

SSL 인증서마다 유효성 검사 수준이 다름

도메인 유효성 검사

가장 덜 엄격하고 저렴한 수준의 검사.

기업이 도메인을 관리하고 있다는 것만 증명하면 된다.

 

조직 유효성 검사

실무적인 프로세스. CA가 담당자나 기업에 인증서를 직접 문의

사용자에게 더 많은 신뢰를 제공

 

확장 유효성 검사

조직의 배경을 완전히 검사한 후에 SSL 인증서를 발행할 수 있다.

 

6. HTTPS

  • SSL위에서 돌아가는 HTTP 대신 암호화된 통신을 하는 프로토콜
  • HTTPS 통신 구현을 위해서는 신뢰할 수 있는 상위 기업이 발급한 인증서가 필요 ( = CA )
  • CA 에서 인증서를 발급받는 것은 유료이다
  • self-signed SSL

    자체적으로 발급받은 인증서
    로그인 및 기타 개인 계정 인증 정보를 암호화
    브라우저는 신뢰할 수 없는 것으로 보고 보안 경고 발생

7. nginx ssl 설정하기

server {
    ...
    ssl on;
    ssl_certificate /etc/ssl/certs/localhost.dev.crt;
    ssl_certificate_key /etc/ssl/private/localhost.dev.key;
    
    ...
}

ssl 설정을 켜주고

ssl 인증서와 ssl 비공개 키를 적어주면 된다.

 

 

reference

m.blog.naver.com/xcripts/70122755291

 

[보안용어] SSL(Secure Socket Layer)의 개념과 동작원리

최근, 개인정보보호법의 시행과 함께, 데이터 암호화의 필요성 및 SSL의 개념이 강조되고 있습니다. 이...

blog.naver.com

www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/

 

반응형