# TSL

[Network] TSL/SSL HandShake
TSL/SSL HandShake 클라이언트와 서버 간에 안전한 연결을 설정하기 위한 과정으로 TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer) 프로토콜에서 사용된다. TLS는 SSL의 후속 버전으로, SSL 보다 안전하고 강력한 암호화 기능을 제공한다. TLS/SSL HandShake 과정 클라이언트 Hello 클라이언트가 서버에게 연결을 시작하기 위해 "client hello" 메시지를 보낸다. 이 메시지에는 클라이언트의 TLS/SSL 버전, 지원하는 암호화 알고리즘, 압축 방식 등의 정보가 포함된다. 서버 Hello 서버는 "client hello" 메시지를 받고, **"server

SSL Pinning Bypass
우회해야하는 pinning request 목록은 아래와 같다. UNPINNED REQUEST CONFIG FINNED REQUEST OKHTTP PINNED REQUEST VOLLEY PINNED REQUEST TRUSTKT PINNED REQUEST MANUALLY PINNED REQUEST 위의 frida script를 통해 아래 캡처 사진에서 보이는 것처럼 1, 2, 4, 5번의 pinning request를 우회할 수 있다. UNPINNED REQUEST, CONFIG PINNED REQUEST, VOLLEY PINNED REQUEST는 교안에 나와있던 frida script로 bypass가 가능했다. TRUSTKIT PINNED REQUEST는 frida script에서
TSL/SSL HandShake
우리는 사이트 주소에서 https://를 본적이 있다. 예전에는 URI가 http로 시작하는 사이트가 전부였지만, 요즘 사이트는 대부분 https로 시작한다. 이렇게 https를 통한 인터넷 접속은, 브라우저를 실행 중인 우리 컴퓨터가 해당 사이트의 서버와 암호화 통신을 하고 있다는 것을 의미한다. https를 이용한 인터넷 접속은 SSL(TSL)을 이용한 것이라고 보면 된다. 즉, SSL 암호화 통신은 ‘SSL(Secure Socket Layer)’ 또는 ‘TSL(Transport Layer Security)’라는 보안 프로토콜을 통해 클라이언트(브라우저)오 서버(웹서버)가 보안이 향상된 통신을 하는 것을 말한다. HTTPS와 SSL은 같은 것인가? 
HTTP 버전별 특징
Overview Http는 Tim Berners-Lee가 HTML을 통신하기 위해 만들어진 프로토콜이 시초입니다. 단순한 0.9를 제외한 각각의 버전의 기본적인 특징은 다음과 같습니다. HTTP1.0 - 나온지 얼마 되지 않아 1.1로 넘어갔다. 1.0 당시에는 request마다 TCP 연결을 다시 수립해야 한다. html, css, js등의 파일을 받는 경우 각각의 리소스마다 TCP연결의 재수립이 필요하다. HTTP1.1 - TCP를 1회 연결한 뒤, 필요한 리소스를 다 받은 후 TCP 연결을 종료한다(특정 설정으로 1번만 연결하고 필요한 파일을 계속 요청도 가능). -> TCP 커넥션이 재사용 될 수 있도록 한다. HTTP2.0 - I/O 멀티 플랙싱이 가능하다. 여러 리소스에 대한 병렬 response가 가능하다. HTTP3.0 - TCP/TLS가 아니라 UDP기반의 QUIC을 사용한다. 월드 와이드 웹의 발명 1989년 제네바의 CERN에서 일하고

HTTPS
HTTPS가 필요한 이유 앞서 HTTP를 설명하며 HTTPS라는 개념을 잠시 언급을 했다. 그런데 이는 왜 필요할까? 우선, HTTP는 모든 데이터가 보내는 그대로 전송이 된다. 이게 무슨소리인가 한번 간단하게 살펴보자. >필자가 일반 http 사이트에 접속을 해서 로그인을 하려고 한다. id : test pw : test1234!! 이렇게 작성을 하고 전송을 눌렀다면, 이 데이터는 어떻게 전달이 될까? 위 plain text 그대로 넘어가게 된다. 즉, 중간에 누가 가로챈다면 해당 사이트에 가입한 필자의 정보가 노출이 되는것이다. 위 예시를 보면 딱 느낌이 왔으리라 생각이 된다. http를 그냥 사용을 한다면 암호화가 되지 않은 채 값이 Server에게 넘어가게 되며, 이 사이에 해커가 가로채기라도 한다면 큰일이다.. 그래서 TLS를 적용한 HTTPS 가 등장을 하게 되었다. “그럼 두 개가 뭐가 다른데?” http는 test1234!! 라는 값이 그대로 노출이

TSL_2021.12.16
JAVA 정리 상속+ super >super : 내가 상속받은 부모 class를 가르키는 키워드 super.함수() : 상속받은 부모 class의 모든 함수를 호출 할 수 있다. 오버로딩 (overloading) 한 class 내에 동일한 이름의 메소드를 여러개 정의 하는 것 > 메소드 이름이 동일해야 한다. 매개변수의 개수 혹은 타입이 달라야한다. [부적합 코드] <img src="https://images.velog.io/images/yu_jep/post/5b79ba29-6568-41d2-bbf6-20ae8cb0d2a2/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%20%EC%A1%B0%EA%B1%

TSL_2021.12.14
JAVA 정리 생성자란? > 인스턴스가 생성될 때 사용되는 '인스턴스 초기화 메소드' 입니다. 즉, new 와 같은 키워드로 해당 클래스의 인스턴스가 새로 생성될 때, 자동으로 호출되는 메소드입니다. 인스턴스 변수를 초기화 하는 용도로 사용합니다. [ 작성 예시 ] [ 동작 설명 ] 위 그림과 같이 new Phone("Galaxy10", "Black", 100); 에서 새로운 인스턴스가 생성되면 Phoe class에서 새로운 생성자Phone(~, ~, ~) 를 만들어서 다시 정의해 주고 이 class를 활용에 사용한다. 만약! 생성자를 만들어

[네트워크] HTTPS 그리고 보안 (암호화/인증서/전자서명)
https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md 의 내용을 다룸 HTTPS 그리고 보안 HTTP와 HTTPS의 가장 큰 차이점은 SSL 인증서이다. SSL인증서는 클라이언트와 서버간의 통신을 공인된 제 3차 업체(CA)가 보증해주는 전자화된 문서이다. SSL 인증서는 사용자가 사이트에서 제공하는 정보를 암호화한다. 암호화되어 전송되는 데이터는 중간에 누가 훔치거나 조작하려해도 암호화 되어있어서 해독할 수 없다. 🐬 SSL과 TLS SSL(Secure Socket Layer)와 TLS(Transport Layer Security)는 같은 것이라고 볼 수 있다. SSL은 TLS의 과거 명칭

[Web] TSL 적용해서 HTTPS 통신으로 배포하기
📌 Intro 두 번의 실제 배포를 경험했었는데요. 처음엔 그냥 HTTP 통신으로 배포를 했습니다. 그런데 이게 보안과 SEO 관점에서 좋지 않다고 하더라구요. 그래서 두번째 배포 땐, TSL를 적용해서 HTTPS 통신으로 배포를 진행하였습니다. 개념적인 설명은 차후에 하도록 하겠습니다. 지금은 EC2 환경에서 Nginx를 통해 TSL를 만들어서 HTTPS 통신으로 바꿔볼게요. 📌 설치 📌 인증서발급 & nginx설정 인증서발급 nginx 앞서 frontend와 backend를 배포할 때 nginx설정 가져와서 추가해보겠습니다. frontend 배포 [backend 배포](https://velog.io/@hsngju/Django-EC2%EC%97%90%EC%84%9C