Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6주차 과제 SSL #10

Open
YangDaJin0104 opened this issue Nov 29, 2024 · 0 comments
Open

6주차 과제 SSL #10

YangDaJin0104 opened this issue Nov 29, 2024 · 0 comments

Comments

@YangDaJin0104
Copy link
Collaborator

SSL

클라이언트(브라우저)와 서버 간 통신을 암호화하여 보안을 강화하는 프로토콜

  • HTTP 뒤에 붙는 S는 Secure이다. 취약점 보완으로 보안이 향상된 웹 통신을 하기 위해서 사용한다.
  • 주요 역할은 클라이언트와 서버 간 주고받는 데이터를 보호(데이터 암호화)하고, 서버의 신원을 인증하여 피싱 공격을 방지합니다. 또한, 데이터가 중간에 변조되지 않음을 보장해줍니다.
  • SSL HandShake
    1. 클라이언트가 서버로 요청 : 클라이언는 서버에 암호화된 세션을 설정하기 위해 요청을 보낸다. 서버와의 통신에 적합한 보안 매커니즘을 협상하기 위해 정보를 제공하는 것이다.
    2. 서버가 응답 : 서버는 클라이언트의 요청을 확인한 뒤, 클라이언트의 목록에서 선택한 암호화 알고리즘, SSL버전, 서버의 디지털 인증서를 응답한다. 자신이 신뢰할 수 있는 엔티티임을 증명하기 위해 인증서를 제공하고, 클라이언트와 동일한 암호화 설정을 사용하겠다고 협의한다.
    3. 클라이언트 인증서 검증 : 클라이언트는 서버가 제공한 인증서를 검증한 뒤, 인증서의 유효성을 확인하고 인증서에 포함된 서버의 공개 키를 추출한다. 클라이언트는 이 공개키를 사용해 새로운 pre-master key를 암호화하여 서버로 보낸다. 즉, 클라이언트는 서버가 신뢰할 수 있는지 확인하고, 암호화된 데이터를 공유할 준비를 한다. 프리 마스터 키는 이후 대칭키를 생성하는데 사용된다.
    4. 서버가 프리마스터 키 복호화 : 서버는 클라이언트가 보낸 암호화된 프리마스터 키를 자신의 개인키를 사용해 복호화한다. 클라이언트와 서버는 서로 동일한 대칭 키를 생성하여 안전한 통신을 할 준비를 완료한다.
    5. 클라이언트가 암호화된 테스트 메시지 전송 : 클라이언트는 대칭키를 사용해 암호화된 테스트 메시지를 서버로 보낸다. 이 메시지는 양측이 동일한 대칭 키를 정확히 계산했는지 확인하는데 사용된다. 이 단계는 안전한 통신 채널이 설정되었음을 검증한다.
    6. 서버가 테스트 메시지 검증 후 응답 : 서버는 클라이언트의 테스트 메시지를 복호화하여 검증한다. 검증이 성공하면 대칭키를 사용해 암호화된 메시지로 클라이언트에 응답한다. 이로써 암호화된 통신 채널이 최종적으로 설정된다.
    7. 안전한 세션 시작 : 클라이언트와 서버는 생성된 대칭키를 사용하여 이후의 모든 데이터를 암호화하며 통신을 시작한다. 이 단계부터는 클라이언트와 서버간 데이터가 안전하게 보호된다. 대칭 암호화는 빠르고 효율적이며 양측에서 동일한 키를 사용하므로 데이터 보안을 유지한다.

image

[출처] https://help.ssl.com/knowledge/ssl-handshake

  • SSL 인증서 발급 후 yml파일 설정
server:
  port: 443 # HTTPS 기본 포트
  ssl:
    enabled: true
    key-store: 인증서 경로
    key-store-password: 인증서 비밀번호
    key-store-type: 인증서 타입 (JKS 또는 PKCS12)
  • HTTP 요청을 HTTPS로 강제 리다이렉트 하려면 Spring Security 또는 WebServerFactory를 사용한다.

CDN

전 세계에 분산된 서버 네트워크로 정적 자원(이미지)를 클라이언트와 가까운 서버에서 제공하여 응답 속도를 높이고 서버 부하를 줄인다.

  • 동작 원리
    1. 사용자가 자원을 요청하면 CDN은 가장 가까운 서버에서 자원을 제공한다.
    2. 원본 서버(ex.S3)에서 자원을 캐싱하여 반복 요쳥 시 캐싱된 데이터를 제공한다.
    3. 요청이 캐싱되지 않은 경우 CDN 서버가 원본 서버에서 데이터를 가져와 클라이언트에 전달한다.
  • 주요 기능
    • 정적 리소스를 캐싱하여 응답 속도 향상
    • CDN레벨에서 HTTPS 트래픽 처리
    • 트래픽을 분산하여 대규모 공격을 방어
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant