HTTPS와 SSH
HTTPS 역시 데이터를 암호화시켜주는 프로토콜에 해당된다. SSH 와의 차이가 무엇일까?
- HTTPS 는, 웹 브라우저가 웹 사이트를 출력해 주기 위해 서버와의 커뮤니케이트 하는 것을 도와주는 것
- SSH 는, 쉘을 통해서 다른 디바이스와의 데이터 교환이나 커뮤니케이션을 할 수 있도록 해 준다.
- Shell로는, Linux terminal shell 일 수도 있고, 윈도우의 커맨드프롬프트 쉘 일 수도 있다.
- terminal 등을 사용한다는 것은, OS에게 말을 거는 것과 같다.
- 즉 SSH는, 원격의 OS에게 말을 거는 것과 같은 것
그리고 .. 사실 계층자체가 다르긴 하다.
SSH는 앞서 말했지만 application layer 프로토콜이고
HTTPS 의 경우 SSL or TLS 라는 "보안계층"이 더해진 것이다.
HTTPS
보안전송 계층을 통해 전송되는 HTTP이다.
HTTP(어플리케이션계층 ) —> SSL or TLS(보안계층) → TCP(전송계층) → IP (네트워크 계층) → 네트워크 인터페이스(데이터 링크 계층)
- HTTPS의 보안계층은, SSL,TLS로 구현되었다.
■ 웹서버에서 요청을 만들 때에는, HTTP의 보안프로토콜버전(HTTPS)를 수행한다고 말해 줄 방법이 필요하다 —> URL 스킴
- HTTP 의 URL 스킴 “접두사” : HTTP
- HTTPS의 URL 스킴 “접두사” : HTTPS
클라이언트(웹 브라우저) 는, 웹 리소스에 대한 트랜잭션 수행 요청을 받으면 “URL 스킴”을 검사한다.
( 브라우저에서 , URL 스킴을 검사!! )
- HTTP 스킴을 갖고 있다면 → 클라이언트는 server에 80번 포트로 연결하고, HTTP명령을 전송한다.
- HTTPS 스킴을 갖고 있다면 → 서버에 443번 포트로 연결하고, 서버와 SSL 보안 매개변수를 교환하며 handshake 한다 . 그 후 “암호화된 HTTP 명령”을 전송한다.
■ 정확히 어떤 과정이 추가된건가?
- 클라이언트에서, 웹 서버의 443번 포트로 연결한다.
- 일단 TCP 연결이 establish되고 나면!!!
- 클라이언트 - 서버 는 “암호법 매개변수, 교환키”를 협상하며 SSL계층을 초기화 한다. 이러한 handshake가 완료되면 SSL 초기화가 완료된다.
- 클라이언트는 요청메시지를 “보안계층” 에 보낼 수 있게되었다.
- 즉,이제 요청메시지는 TCP(전송계층) 으로 보내지기 전, “보안계층” 에서 암호화된다.
■ 우리가 사용한 Lets encrypt는 뭐하는 애일까???
- SSL 인증서 발급 기관에 해당된다.
- Let’s encrypt의 경우, 멀티 도메인 지원이 안된다.
- 즉, 우리 과제에서는 “내 도메인” 에 대해서만 인증서를 받았다.
- 이렇게 해 두면, 실제 ip 에 대한 접속의 경우는 HTTP 프로토콜을 사용하게 되었다.
- 따라서, 우리의 경우는 ip → 내 도메인 으로 리다이렉팅 시켜줌으로서 HTTPS 접속을 할 수 있도록 처리해 주었었다.
■ 서버 인증서란 무엇일까??
- SSL은 “서버인증서를” 클라이언트로 나른다. 서버인증서는 왜 필요할까??
- 보안 HTTPS 트랜잭션은, 항상 서버 인증서를 요구한다. 인증기관에 의해 서명된 서버 인증서는, 그 서버를 얼마나 신뢰할 수 있는지 평가하는 것을 도와준다.
- 즉, Client에서는, 그 서버를 신뢰할만한지 검증하기위해! 인증서를 검증할 수 있다.
- 이런식으로, 웹 서버 인증서를 검증하는 것은 “ 웹 브라우저(클라이언트) “ 에서 해 주고 있다.
일단 현재로서는 이정도만 알고 있도록 하자.
'네트워크_aws_등등' 카테고리의 다른 글
HTTP Authentication , Form-based 인증 (0) | 2022.02.23 |
---|