개발툴 팁

SSL 관련해서 정리해보기..

nayha 2020. 2. 14. 16:44


ssl 인증서 

클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장한다
SSL 통신에 사용할 공개카를 클라이언트에게 제공한다.

서버 인증기관(CA Certificate authority)
클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할
 해당기관
 Symantec( veriSign) 42% 점유

 사설 인증기관

 SSL 인증서의 내용
    1. 서비스의 정보(서비스의 도메인/ 인증서를 발급한 CA)
    2. 서버 측 공개키 ( 공개키의 내용, 공개키의 암호화 방법)

    웹브라우저가 웹서버에 접속하면  인증서를 제공한다
    브라우저는 인증서를 발급한 CA가 자신이 내장한 CA의 리스트에 있는지 확인한다.
    포함되어 있다면
    CA 공개키를 이용해서 인증서를 복호화 한다

SSL 동작방법
    악수(handShake) > 전송 > 세션종료
    1.악수
    우선 인사를 한다
    클라인언트가 서버에 접속을 한다  
        client Hello 
        클라이언트 측에서 생성한 랜덤 데이터 전송
        클라이언트가 지원하는 암호화 방식들 서버에게 전달
    서버는 client hello  응답한다.
        서버측에서 생성한 랜덤 데이터 전송
        서버가 선택한 클라이언트 암호화 방식 결정( 클라이언트가 보내온 것 중 최적 선택)
        그 후 인증서 전송
    클라이언트는 서버의 인증서가 CA에 의해서 발급된 것 인지를 확인한다.(브라우저 내장)
        인증서 안에는 서버의 공개키를 전달/ 그리고 쌍을 이루는 비공개키를 생성해서 저장해둠

    똑같은 세션키를 같게 됨

    악수 단계 종료     

    세션
    예) 아이디 / 암호 같은 저장 정보를 세션에 담아두고 있다가 상대방에게 전송 전 session key 값을 이용해서 대칭키 방식으로 암호화한다.

    세션 종료 
    SSL 통신 종료
    session key 폐기

 

조금 요약을 해보면

클라이언트(브라우저) 와 서버는 같은 키를 주고받는다.

CA 인증은 결국 특정 서버가 또 있다(브라우저 내장)

주고받는 순간 통신은 세션 키 생성

인증 통신이 끌 나면 세션 키 제거

 

맞나 모르겠다 복잡스러 ~ 
   

반응형