TLS(Transport Layer Security)
HTTPS에서 클라이언트와 서버간 통신 전
SSL 인증서로 신뢰성 여부를 판단하기 위해 연결하는 방식
- 과거에는 SSL(Secure Sockets Layer)라고 불렸던 프로토콜인데 버전이 올라가면서 이름이 바뀜
- 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보
- 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다
- TCP/IP 네트워크를 사용하는 곳에서 동작하는 프로토콜이기 때문에 전송계층(Transport Layer)에서 동작
- AWS에서도 SSL 인증서를 발급하고 HTTPS에 적용하는 과정을 해본적이 있을 것이다
데이터 자체를 암호화해서 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다
디피-헬만 키 교환, SHA-256, SHA-384
* SSH(Secure Shell)는 뭘까?
네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜
- AWS와 같은 클라우드 서비스는 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해서 SSH을 통한 접속을 해야한다(PuTTy, mobaXterm)
- 소스 코드를 원격 저장소인 깃헙에 푸쉬할 때 SSH를 활용해 파일을 전송하게 된다.
로컬 개발 환경에서 Git을 단독으로 사용한다면 SSH가 없어도 무방하지만, 안전하게 외부 Git 서버에서 코드를 Clone하거나 Push하려면 SSH 프로토콜을 사용한다
TLS/SSL HandShake
클라이언트 -> 서버로 데이터를 보내는데 이때의 데이터는 암호화 알고리즘, 버전, 압축 방식등의 다양한 정보를 담고 전송
서버는 데이터를 받고 세션ID와 CA 공개 인증서 같은 정보들을 가지고 응답한다
클라이언트 측은 CA 인증서안에 있는 공개키를 이용하여 암호화하고 서버는 이를 확인해 서로 ok 사인이 뜨면 서로 통신
'CS' 카테고리의 다른 글
[AWS]GitLab CI/CD 이용해서 Springboot 배포하기 (0) | 2023.01.03 |
---|---|
로드 밸런싱(Load Balancing) 이란? (0) | 2022.12.31 |
네이밍 컨벤션 ( Naming Convention ) in Java (0) | 2022.12.27 |
DevOps란? (0) | 2022.12.26 |
GitHub, GitLab의 차이점 (0) | 2022.12.26 |