SSLEngine — SSL 엔진

SSLEngine — SSL 엔진

SSLEngine 클래스는 Secure Sockets Layer(SSL) 또는 IETF RFC 2246 "Transport Layer Security"(TLS) 프로토콜 같은 프로토콜을 사용해 안전한 통신을 가능하게 하지만, 전송에 독립적인 클래스예요.

출처: Java API Reference

본문

보안 통신 모드에는 다음이 포함돼요.

  • 무결성 보호(Integrity Protection) — SSL/TLS/DTLS는 능동적 도청자에 의한 메시지 수정을 보호해요.
  • 인증(Authentication) — 대부분의 모드에서 SSL/TLS/DTLS는 피어 인증을 제공해요. 서버는 보통 인증되고, 클라이언트는 서버가 요청하면 인증될 수 있어요.
  • 기밀성(Confidentiality, Privacy Protection) — 대부분의 모드에서 SSL/TLS/DTLS는 클라이언트와 서버 사이에 전송되는 데이터를 암호화해요.

이런 보호는 주어진 SSL 연결에 사용되는 암호 알고리즘의 조합인 "암호 스위트(cipher suite)"에 의해 지정돼요. 협상 과정에서 두 엔드포인트는 양쪽 환경에서 사용 가능한 암호 스위트에 동의해야 해요. 공통된 스위트가 없으면 SSL 연결을 만들 수 없어요.

암호 스위트는 "핸드셰이킹(handshaking)"이라는 협상 과정으로 성립돼요. 핸드셰이킹이 완료된 후 getSession() 메서드로 세션 속성에 접근할 수 있어요.

SSLEngine은 추상 클래스로, 주요 메서드는 wrap(출력 데이터 생성)과 unwrap(입력 데이터 처리) 그리고 beginHandshake, getSession, setEnabledCipherSuites 등이 있어요. SSLSocket과 달리 전송에 독립적이라 비블로킹/파이프라인 I/O에 사용돼요.

더 알아보기 (Learn more)