SSLSocketFactory — SSL 소켓을 만드는 팩토리

SSLSocketFactory — SSL 소켓을 만드는 팩토리

SSLSocketFactorySSLSocket을 생성하는 팩토리 클래스예요. 보안 소켓이 필요할 때 직접 생성자로 만들기보다 이 팩토리를 통해 만드는 게 일반적이에요. SocketFactory를 상속받아요.

출처: Java API Reference

본문

public abstract class SSLSocketFactory extends SocketFactory

생성자

  • SSLSocketFactory() — 하위 클래스에서만 사용하는 생성자예요.

메서드

  • Socket createSocket(Socket s, InputStream consumed, boolean autoClose) — 이미 연결된 소켓 위에 서버 모드 Socket을 씌우고, 그 소켓의 기본 InputStream에서 이미 소비·제거된 데이터를 읽을 수 있게 해요.
  • abstract Socket createSocket(Socket s, String host, int port, boolean autoClose) — 주어진 포트의 이름 지정된 호스트에 연결된 기존 소켓 위에 소켓을 씌워 반환해요.
  • static SocketFactory getDefault() — 기본 SSL 소켓 팩토리를 반환해요. 이 메서드가 처음 호출되면 보안 속성 ssl.SocketFactory.provider를 조사해요. 값이 null이 아니면 그 이름의 클래스를 로드·인스턴스화해요. 성공하고 그 객체가 SSLSocketFactory의 인스턴스라면 기본 SSL 소켓 팩토리가 돼요. 그렇지 않으면 SSLContext.getDefault().getSocketFactory()를 반환해요. 그 호출이 실패하면 동작하지 않는 팩토리를 반환해요.
  • abstract String[] getDefaultCipherSuites() — 기본으로 활성화되는 암호 스위트 목록을 반환해요. 다른 목록이 활성화되지 않으면 SSL 연결의 핸드셰이킹은 이 중 하나의 암호 스위트를 사용해요. 기본값의 최소 품질 요구사항은 기밀성 보호와 서버 인증을 필요로 해요.
  • abstract String[] getSupportedCipherSuites() — SSL 연결에서 활성화할 수 있는 암호 스위트의 이름들을 반환해요.

어떤 흐름으로 쓸까요?

  1. SSLContext를 준비하고 SSLSocketFactory를 얻어요 (getDefault() 또는 SSLContext.getSocketFactory()).
  2. 팩토리의 createSocket 메서드로 보안 소켓을 만들어요.
  3. 만들어진 소켓에서 입출력 스트림을 얻어 통신해요.

더 알아보기 (Learn more)