HTTPS와 SSL인증서

ganta·2021년 5월 29일
0

네트워크

목록 보기
1/1
post-thumbnail

본 내용은 생활코딩의 내용을 바탕으로 정리하였습니다.

https://opentutorials.org/course/228/4894

Http와 Https

http(Hypertext Transfer Protocol) : hypertext인 html을 전송하기 위한 통신규약

https(Hypertext Transfer Protocol Over Secure Socket Layer): 보안이 강화가 된 http

대칭키

암호화 : HELLO -> QWERT(어떤 정보를 알아볼 수 없게 만드는 행위)
복호화 : QWERT -> HELLO(암호화된 정보를 알아 볼 수 있게 만드는 행위)

암호화/ 복호화를 동일한 키로 해결을 하는 것이 대칭키(openssl, des3...)

단점

키 값이 노출이 될 위험이 있기에 노출이 되면 위험한 상황이 도출이 될 위험이 있다.

공개키

대칭키 방식을 개선한 방식

공개키 + 개인키(비공개키) -> 두개의 키로 이루워져 있다

  • 안전한 암호화와 복호화가 가능(공개키로 암호화를 실시 할 시)

-> 키 배달사고가 발생하지 않는다

*인증의 기능 -> 받은 정보가 예상한 사람이 보냈는가?(개인키로 암호화를 실시 할 시)

-> 공개키는 누구나가 가지고 있기 때문데 개인키로 암호화 된 정보는 누구나 복호화가 가능

-> 기대 효과는 만약 공개키로 해당 정보를 복호화가 가능 하다면 개인키를 가지고 있는 대상이 보낸 정보가 확실하다는 인증의 효과가 있음

SSL 디지털 인증서

클라이언트, 서버간 제 3자가 보증해주는 전자화된 문서

효과

  • 통신내용이 공격자에게 노출되는 것을 막음

  • 클라이언트가 접속하려하는 서버가 신뢰 할 수 있는 서버인지 판단

  • 통신 내용의 악의적인 변경을 방지

  • https와 ssl은 약간의 다른 말(ssl 이 작동하는 층 위에 https 프로토콜이 존재)

*ssl과 tsl은 같음(IETF관리로 바뀌면서 ssl이 tls로 이름이 바뀜)

SSL 과 CA

CA : certification authority

해당 서버가 신뢰 할 수 있는 서버(사이트)임을 보장해주는 기관

사내서버같은 경우 SSL 인증서 구입 필요가 없다.

-> 서버가 안정하다는 것이 내부적으로는 알고 있기 때문

SSL 인증서의 내용

  • 서비스의 정보(인증서 발급 CA, 서비스 도메인 등)

  • 서버측 공개키(공개키의 내용, 공개키의 암호화 기법)

SSL인증 과정

1, 웹 브라우저가 서버에 접속할 때 서버는 제일 먼저 인증서를 제공

2, 웹 브라우저는 CA기관을 알고 있고(내장된 CA리스트 들이 있음) SSL인증서에 있는 CA정보를 판단 후 공개키를 이용하여 복호화를 실시

-> 해당 웹 서버의 공개키 및 여러 정보를 클라이언트는 얻을 수 있음

*공개키키 기법은 computing power가 많이 들기 때문에 공개키 방식으로 대칭키를 교환 후 실제 데이터는 대칭키 방식으로 주고받는다.

컴퓨터와 컴퓨터가 네트워크로 통신 할 때의 3가지 단계

1, 악수(handshake)

2, 전송(transpart)

3, 세션종료

1, 악수(handshake)

클라이언트와 서버가 서로 어떤 상태인지 파악

step1

클라이언트가 서버에 접속(Client Hello)

주고받는 정보

  • 클라이언트에서 생성한 랜덤 데이터

  • 클라이언트가 지원하는 암호화 방식들

  • 세션 아이디

step2

서버는 Client Hello에 대한 응답으로 Server Hello

  • 서버측 생성한 랜덤 데이터

  • 서버가 선택한 클라이언트의 암호화 방식

  • 인증서

step3

인증서가 CA에 의해서 발급 된 것인지 확인하기 위해 브라우더에 내장된 CA리스트를 보고 있으면 공개키로 복호화

-> 클라이언트는 클라이언트의 랜덤 데이터와 서버의 랜덤 데이터를 사용하여 pre master secret을 생성하고 이 pre master secret을 공개키 방식으로 서버에 전달
-> 서버와 클라이언트는 서로 pre master secret을 가짐
-> 일련의 과정으로 거쳐 master key로 만들고 session key를 가지게 됨
-> 이후 클라이언트와 서버는 핸드쉐이크 단계의 종료를 서로에게 알림

2,세션

session key(대칭키) 암호화 하여 클라이언트와 서버가 데이터를 암호화, 복호화 하여 처리

*공개키 -> 이상적이지만 computing power가 많이 들기 때문에 hybrid한 방식으로 처리

3, 세션종료

SSL 통신이 끝났음을 서로에세 알려줌

통신에서 사용한 대칭키인 세션키를 폐기

=> 세션의 수립과 종료는 짧아서 유출이 되도 기존 대칭키 방식보다 보안이 높다고 할 수 있음

SSL 제공 방법
ssl.key : 서버쪽 개인키(비공개키)

ssl.crt : 디지털 인증서

ca.pem : ROOT CA 인증서(CA도 계층적 구조라 CA를 다른 CA가 인증해 주고 하는데 그 중 최상위 CA)

sub.class1.server.ca.pem : 중계자 인증서

profile
한걸음씩 꾸준히

0개의 댓글