SSLEngine — SSL 엔진
SSLEngine — SSL 엔진
SSLEngine 클래스는 Secure Sockets Layer(SSL) 또는 IETF RFC 2246 "Transport Layer Security"(TLS) 프로토콜 같은 프로토콜을 사용해 안전한 통신을 가능하게 하지만, 전송에 독립적인 클래스예요.
본문
보안 통신 모드에는 다음이 포함돼요.
- 무결성 보호(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에 사용돼요.