본문 바로가기

네트워크

TLS/SSL

반응형

SSL(Secure Sockets Layer) 프로토콜과 TLS(Transport Layer Security)에 대해 정리해보겠습니다.

이 두가지 프로토콜은 암호화와 보안을 제공하여 인터넷 상거래를 가능하게 해 주었습니다.

특히 TLS는 브라우저 같은 클라이언트가 공개된 인터넷 망을 통해 웹서버와 커뮤니케이션할 때 여러가지 보안 메커니즘을 제공하여 원하는 상대와 안전한게 연결될 수 있도록 도와주고 있습니다.

 

HTTP가 SSL/TLS를 이용하여 HTTPS를 제공하고 있습니다.

SSL

SSL은 1990년대 중반 넷스케이프가 개발한 것으로 데이터를 안전하게 전송하기 위한 인터넷 통신 규약 프로토콜입니다.

SSL1.0, 2.0을 거쳐 출시된 3.0은 이후 프로토콜들의 기반을 제공하였습니다.

 

TLS

SSL 프로토콜의 차세대 버전입니다. 이 프로토콜은 인터넷 엔지니어링 테스크포스(Internet Engineering Task Force, IETF)에 의해 표준화됐습니다.

TLS와 SSL은 지속적으로 업데이트되는 일련의 프로토콜들을 형성하며 SSL/TLS로 함께 묶여 분류되어 양자택일이 아닙니다. 

 

TLS 프로토콜은 모든 종류의 인터넷 트래픽을 암호화합니다. 

가장 대표적인 웹 트래픽 암호화를 보자면, 웹 사이트 URL이 https로 시작하고 연결이 안전하게 이뤄지고 있음을 알려주는 자물쇠 모양의 표시가 뜬다면 이 브라우저가 TLS를 통해 연결되었단 의미입니다.

TLS는 이메일, 유즈넷 등 애플리케이션에서 사용 가능합니다.

 

HandShake 프로세스

HandShake란, 세션 키에 합의하는 과정을 일컬으며 서버- 클라이언트 두대의 컴퓨터가 처음 만나게 되는 TLS 프로토콜의 핵심이라 할 수 있습니다. 대략적인 과정은 아래와 같습니다.

 

1. 클라이언트가 서버에 보안 연결을 요청합니다. 

서버는 cipher suites (암호화된 연결을 만드는 알고리즘 툴킷)을 제공합니다. 클라이언트는 이 목록을 자신이 가진 cipher suites와 비교해 하나를 선택하며 서버에 어떤 suites를 사용할 것인지 알려줍니다.

 

2. 서버는 클라이언트에게 자신의 신원을 확인해줄 3rd 파티 기관이 발급한 digital cerificate을 제공합니다. 이 digital cerificate에는 서버의 퍼플릭 암호화 키를 내포하고 있습니다. 클라이언트는 서버 인증서를 받아 그 진위를 확인합니다. 

 

3. 클라이언트와 서버는 퍼블릭 키를 사용해 나머지 세션에서 커뮤니케이션 암호화에 사용할 세션 키를 설정합니다. 여기에는 다양한 기술들이 사용될 수 있습니다. 

세션키는 중단없는 단일 커뮤니케이션 세션에 대해서만 유효합니다. 즉, 클라이언트와 서버간의 통신이 끊긴 뒤 통신이 다시 이어지면 새로운 세션키 설정을 위해 핸드셰이크 프로세스를 다시 시작해야합니다.

 

SSL/TLS 인증서의 의미

SSL/TLS 인증서는 안전한 연결을 시작할 때 반드시 필요한 퍼블릭 암호화키를 클라이언트에게 제공합니다. 인증서는 단순히 키를 제공하는 것에 국한되지 않고 퍼블릭 키가 그것을 제공하는 단체와 관련되어 있음을 클라이언트에게 증명해주는 역할을 합니다. 

 

인증서의 작동 과정은 다음과 같습니다.

가장 먼저 인증서를 발급하는 기관은 CA(Certificate Authorities)라는 곳입니다. TLS로 서비스를 암호화하려는 기관에서는 CA로부터 인증서를 구매해야 하고 CA는 해당 조직이 실제로 자신이 주장하는 그 단체가 맞는지 확인하는 과정이 필요합니다.

 

인증서를 사용할 때 전제 조건은 CA를 신뢰할 수 있어야 한다는 것입니다. CA가 훼손된 인증서를 발급할 경우를 대비하여 브라우저에서는 발급기록을 투명성 로그에 남길 경우에만 신뢰하고 있습니다.

CA로부터 정상적인 인증서를 발급받았다면 여러 파일들이 생성됩니다. 파일 중에서 인증서의 개인키는 안전하게 관리돼야합니다.

관리자를 소유자로하고 다른 사용자는 접근할 수 없도록 하여야 합니다.

 

SSL 인증서를 정의하는 표준을 X.509라고 합니다. 이 표준 덕분에 인증서들은 퍼블릭 키와 인증서 소유자의 확인된 신원 외에도 많은 정보를 휴대할 수 있습니다.

 

적용해보기

실제 서버에 개발용 인증서를 생성하여 적용해보겠습니다. 실습에서는 직접 인증서를 생성하여 진행할 것이므로 HTTPS접속시 보안되지 않은 연결이란 경고가 뜰 수 있습니다. 이는 CA가 인증되지 않은 곳 (스스로만든..) 이기때문입니다.  

 

ssl  적용을 위해서는  OpenSSL이 최신 버전으로 설치돼야합니다.

sudo yum update openssl

sudo yum update openssl

또한, mod_ssl 이 필요하므로 없는 경우 설치해줍니다.

sudo yum install mod_ssl

sudo yum install mod_ssl

 

 

 

참고 사이트

http://www.itworld.co.kr/tags/52416/SSL/113007

engineering.linecorp.com/ko/blog/best-practices-to-secure-your-ssl-tls/

 

 

반응형

'네트워크' 카테고리의 다른 글

L2 네트워크  (0) 2022.11.04
[통신] Http 프로그래밍, socket 프로그래밍  (0) 2021.07.27
통신종료  (0) 2020.09.18
OAuth  (0) 2019.12.01
LDAP  (0) 2019.11.24