|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.net.Socket
javax.net.ssl.SSLSocket
public abstract class SSLSocket
이 클래스는 Socket
를 확장해, Secure Sockets Layer (SSL)나 IETF Transport Layer Security (TLS)등의 프로토콜을 사용하는 시큐어 소켓을 제공합니다.
이러한 소켓은, 일반적으로의 스트림 소켓입니다만, TCP 등의 기본이 되는 네트워크 트랜스폴트 프로토콜상에 시큐리티 보호층을 추가합니다. 다음의 시큐리티 보호를 합니다.
이러한 시큐리티 보호는, 「암호화 방식군」을 사용해 지정합니다. 암호화 방식군은, 지정된 SSL 접속으로 사용되는 암호화 알고리즘의 편성입니다. 협상을 실시하려면 , 2 개의 끝이 같은 암호화 방식군을 선택해, 그 암호화 방식군이 양쪽 모두의 환경에서 사용 가능하지 않으면 안됩니다. 공통의 암호화 방식군이 없는 경우는, SSL 접속을 확립하지 못하고, 데이터를 교환할 수 없습니다.
사용되는 암호화 방식군은, 「핸드 쉐이크」라고 불리는 협상 프로세스에 의해 확립됩니다. 핸드 쉐이크에서는, 세션의 작성 또는 참가를 합니다. 작성 또는 참가한 세션은, 무효가 될 때까지 다양한 접속을 보호합니다. 핸드 쉐이크가 완료하면(자),getSession 메소드를 사용해 세션 속성에 액세스 할 수 있습니다. 접속의 최초의 핸드 쉐이크는, 다음의 몇개의 방법으로 개시할 수 있습니다.
startHandshake
를 호출해, 핸드 쉐이크를 명시적으로 개시한다
getSession
를 호출하면(자), 유효한 세션이 현재 존재하지 않는 경우는 세션이 설정되어 핸드 쉐이크가 암묵적으로 개시된다
하등의 이유로써 핸드 쉐이크가 실패했을 경우,SSLSocket
가 닫아 통신할 수 없게 됩니다.
암호화 방식군을 사용할 때는, 2 개의 그룹에 대해 이해할 필요가 있습니다.
디폴트의 구현으로 사용 가능하게 하는 암호화 방식군에서는, 서버를 인증해, 기밀성이 보증되지 않으면 안됩니다. 서버 인증을 하지 않고 기밀성이 보증되지 않는 암호화 방식군을 선택하는 경우는, 서버 인증을 하지 않고 비공개성이 보증되지 않는 (암호화되지 않는다) 통신이 사용되는 것에 2 개의 끝이 명시적으로 동의 할 필요가 있습니다.
SSLSocket
가 최초로 작성될 때는, 핸드 쉐이크는 행해지지 않습니다. 이 때문에, 사용하는 암호화 방식군이나 소켓 모드 (클라이언트 모드 또는 서버 모드)등의 통신 설정은, 어플리케이션으로부터 실시합니다. 다만, 그 접속을 사용해 어플리케이션 데이터를 송신할 때는, 항상 시큐리티가 보증됩니다.
핸드 쉐이크의 완료를 전하는 이벤트 통지를 수신하는 설정으로 할 수 있습니다. 이 경우, 2 개의 추가 클래스를 이용할 필요가 있습니다. HandshakeCompletedEvent 객체는, 이 API 의 사용자에 의해 등록된 HandshakeCompletedListener 인스턴스에게 건네집니다. SSLSocket
는,SSLSocketFactory
에 의해 작성됩니다.
이 외 ,SSLServerSocket
로부터의 접속을 받아들였을 경우에도 작성됩니다.
SSL 소켓의 동작에는, 클라이언트 모드 또는 서버 모드가 있습니다. 핸드 쉐이크 프로세스를 개시하는 피어, 및 각 피어로부터 송신되는 메세지는, 모드에 의해 정해집니다. 다만, 접속에는, 클라이언트와 서버가 1 개씩 필요합니다. 이 요건을 채우지 않은 경우, 핸드 쉐이크는 올바르게 행해지지 않습니다. 최초의 핸드 쉐이크가 개시되고 나서는, 협상을 다시 하는 경우여도, 클라이언트 모드와 서버 모드를 바꿀 수 없습니다.
Socket
,
SSLServerSocket
,
SSLSocketFactory
생성자 의 개요 | |
---|---|
protected |
SSLSocket ()
서브 클래스에서만 사용됩니다. |
protected |
SSLSocket (InetAddress address,
int port)
서브 클래스에서만 사용됩니다. |
protected |
SSLSocket (InetAddress address,
int port,
InetAddress clientAddress,
int clientPort)
서브 클래스에서만 사용됩니다. |
protected |
SSLSocket (String host,
int port)
서브 클래스에서만 사용됩니다. |
protected |
SSLSocket (String host,
int port,
InetAddress clientAddress,
int clientPort)
서브 클래스에서만 사용됩니다. |
메소드의 개요 | |
---|---|
abstract void |
addHandshakeCompletedListener (HandshakeCompletedListener listener)
이 접속의 SSL 핸드 쉐이크의 완료 통지를 받기 위한 이벤트 청취자를 등록합니다. |
abstract String [] |
getEnabledCipherSuites ()
이 접속으로 현재 사용 가능하게 되어 있는 SSL 암호화 방식군의 이름을 돌려줍니다. |
abstract String [] |
getEnabledProtocols ()
이 접속에 대해서 현재 사용 가능하게 되어 있는 프로토콜의 이름을 돌려줍니다. |
abstract boolean |
getEnableSessionCreation ()
이 소켓으로 새로운 SSL 세션을 확립할 수 있는 경우는 true 를 돌려줍니다. |
abstract boolean |
getNeedClientAuth ()
이 소켓에 클라이언트 인증이 필수인경우는 true 를 돌려줍니다. |
abstract SSLSession |
getSession ()
이 접속으로 사용되고 있는 SSL 세션을 돌려줍니다. |
SSLParameters |
getSSLParameters ()
이 SSLSocket 로 유효한 SSLParameters 를 돌려줍니다. |
abstract String [] |
getSupportedCipherSuites ()
이 접속으로 사용 가능하게 할 수 있는 암호화 방식군의 이름을 돌려줍니다. |
abstract String [] |
getSupportedProtocols ()
SSL 접속으로 사용 가능하게 할 수 있는 프로토콜의 이름을 돌려줍니다. |
abstract boolean |
getUseClientMode ()
핸드 쉐이크시에 클라이언트 모드를 사용하도록(듯이) 소켓이 설정되어 있는 경우는 true. |
abstract boolean |
getWantClientAuth ()
이 소켓이 클라이언트 인증을 요구하는 경우는, true 를 돌려줍니다. |
abstract void |
removeHandshakeCompletedListener (HandshakeCompletedListener listener)
이전에 등록된 핸드 쉐이크 완료 청취자를 삭제합니다. |
abstract void |
setEnabledCipherSuites (String [] suites)
이 접속으로 사용 가능한 암호화 방식군을 설정합니다. |
abstract void |
setEnabledProtocols (String [] protocols)
이 접속으로 사용 가능한 프로토콜의 버젼을 설정합니다. |
abstract void |
setEnableSessionCreation (boolean flag)
이 소켓으로 새로운 SSL 세션을 확립할 수 있을지 어떨지를 제어합니다. |
abstract void |
setNeedClientAuth (boolean need)
클라이언트 인증을 요구하도록(듯이) 소켓을 설정합니다. |
void |
setSSLParameters (SSLParameters params)
이 소켓에 SSLParameters 를 적용합니다. |
abstract void |
setUseClientMode (boolean mode)
핸드 쉐이크시, 소켓이 클라이언트 (또는 서버) 모드를 사용하도록(듯이) 설정합니다. |
abstract void |
setWantClientAuth (boolean want)
클라이언트 인증을 요구하도록(듯이) 소켓을 설정합니다. |
abstract void |
startHandshake ()
이 접속상에서 SSL 핸드 쉐이크를 개시합니다. |
클래스 java.net. Socket 로부터 상속된 메소드 |
---|
bind , close , connect , connect , getChannel , getInetAddress , getInputStream , getKeepAlive , getLocalAddress , getLocalPort , getLocalSocketAddress , getOOBInline , getOutputStream , getPort , getReceiveBufferSize , getRemoteSocketAddress , getReuseAddress , getSendBufferSize , getSoLinger , getSoTimeout , getTcpNoDelay , getTrafficClass , isBound , isClosed , isConnected , isInputShutdown , isOutputShutdown , sendUrgentData , setKeepAlive , setOOBInline , setPerformancePreferences , setReceiveBufferSize , setReuseAddress , setSendBufferSize , setSocketImplFactory , setSoLinger , setSoTimeout , setTcpNoDelay , setTrafficClass , shutdownInput , shutdownOutput , toString |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
생성자 의 상세 |
---|
protected SSLSocket()
protected SSLSocket(String host, int port) throws IOException , UnknownHostException
host
- 접속하는 호스트의 이름port
- 서버의 포트 번호
IOException
- 소켓의 작성중에 입출력 에러가 발생했을 경우
UnknownHostException
- 호스트가 불명의 경우protected SSLSocket(InetAddress address, int port) throws IOException
address
- 서버의 호스트port
- 포트
IOException
- 소켓의 작성중에 입출력 에러가 발생했을 경우protected SSLSocket(String host, int port, InetAddress clientAddress, int clientPort) throws IOException , UnknownHostException
host
- 접속하는 호스트의 이름port
- 서버의 포트 번호clientAddress
- 클라이언트의 호스트clientPort
- 클라이언트의 포트 번호
IOException
- 소켓의 작성중에 입출력 에러가 발생했을 경우
UnknownHostException
- 호스트가 불명의 경우protected SSLSocket(InetAddress address, int port, InetAddress clientAddress, int clientPort) throws IOException
address
- 서버의 호스트port
- 포트clientAddress
- 클라이언트의 호스트clientPort
- 클라이언트의 포트 번호
IOException
- 소켓의 작성중에 입출력 에러가 발생했을 경우메소드의 상세 |
---|
public abstract String [] getSupportedCipherSuites()
getEnabledCipherSuites()
,
setEnabledCipherSuites(String [])
public abstract String [] getEnabledCipherSuites()
암호화 방식군은, 비록 유효해도 사용되지 않는 것이 있습니다. 예를 들어, 피어가 암호화 방식군을 지원하지 않는 경우, 이 encode에 필요한 증명서 ( 및 비공개키)를 사용할 수가 없는 경우, 또는, 익명의 암호화 방식군이 이용 가능해도 인증이 요구되는 경우 등입니다.
getSupportedCipherSuites()
,
setEnabledCipherSuites(String [])
public abstract void setEnabledCipherSuites(String [] suites)
suites
파라미터로 지정된 각 암호화 방식군은, getSupportedCipherSuites()로 리스트되어 있지 않으면 안됩니다. 그렇지 않은 경우, 메소드는 실패합니다. 이 메소드의 호출이 정상적으로 행해졌을 때,suites
파라미터에 리스트 된 암호화 방식군만, 사용할 수가 있습니다.
왜 특정의 암호화 방식군을 접속으로 사용할 수가 없는 것처럼 붙어서는,getEnabledCipherSuites()
를 참조해 주세요.
suites
- 사용 가능하게 하는 모든 암호화 방식군의 이름
IllegalArgumentException
- 파라미터로 지정된 암호화 방식군의 일부가 지원되지 않는 경우, 또는 파라미터가 null 의 경우. getSupportedCipherSuites()
,
getEnabledCipherSuites()
public abstract String [] getSupportedProtocols()
public abstract String [] getEnabledProtocols()
setEnabledProtocols(String [])
public abstract void setEnabledProtocols(String [] protocols)
프로토콜은,getSupportedProtocols()
에 의해, 지원 대상으로 해 리스트되어 있지 않으면 안됩니다. 이 메소드의 호출이 정상적으로 행해졌을 때,protocols
파라미터에 리스트 된 프로토콜만, 사용할 수가 있습니다.
protocols
- 사용 가능하게 하는 모든 프로토콜의 이름
IllegalArgumentException
- 파라미터로 지정된 프로토콜의 일부가 지원되지 않는 경우, 또는 파라미터가 null 의 경우. getEnabledProtocols()
public abstract SSLSession getSession()
이 메소드는, 필요에 따라서 초기 핸드 쉐이크를 개시해, 핸드 쉐이크가 확립했을 때에 블록을 해제합니다.
초기 핸드 쉐이크로 에러가 발생하면(자), 무효인 세션 객체가 돌려주어져 「SSL_NULL_WITH_NULL_NULL」라고 하는 무효인 암호화 방식군이 보고됩니다.
SSLSession
public abstract void addHandshakeCompletedListener(HandshakeCompletedListener listener)
listener
- HandShakeCompleted 이벤트 청취자
IllegalArgumentException
- 인수가 null 의 경우startHandshake()
,
removeHandshakeCompletedListener(HandshakeCompletedListener)
public abstract void removeHandshakeCompletedListener(HandshakeCompletedListener listener)
listener
- HandShakeCompleted 이벤트 청취자
IllegalArgumentException
- 청취자가 등록되지 않은 경우, 또는 인수가 null 의 경우. addHandshakeCompletedListener(HandshakeCompletedListener)
public abstract void startHandshake() throws IOException
벌써 접속상에 송신된 데이터는, 이 핸드 쉐이크가 완료할 때까지는 그대로의 상태를 유지해, 핸드 쉐이크가 완료하면(자) 이벤트로부터 신호를 받습니다. 이 메소드는, 접속상의 최초의 핸드 쉐이크와 동시에 개시되어 핸드 쉐이크의 협상이 완료하면(자) 종료합니다. 기존의 소켓상에서의 복수의 핸드 쉐이크를 지원하지 않는 프로토콜은, IOException 를 throw 합니다.
IOException
- 네트워크 레벨의 에러addHandshakeCompletedListener(HandshakeCompletedListener)
public abstract void setUseClientMode(boolean mode)
이 메소드는, 모든 핸드 쉐이크의 전에 호출할 필요가 있습니다. 일단 핸드 쉐이크가 개시되면(자), 이 소켓의 수명이 다할 때까지, 현재의 모드를 리셋 할 수 없습니다.
일반적으로, 서버는 자신을 인증합니다만, 클라이언트는 반드시 그렇다고는 할 수 없습니다.
mode
- 핸드 쉐이크를 클라이언트 모드로 개시하는 경우는 true
IllegalArgumentException
- 최초의 핸드 쉐이크가 개시되고 나서 모드를 변경하려고 했을 경우. getUseClientMode()
public abstract boolean getUseClientMode()
setUseClientMode(boolean)
public abstract void setNeedClientAuth(boolean need)
소켓의 클라이언트 인증 설정은, 다음의 어느 쪽인가에 됩니다.
setWantClientAuth(boolean)
와 달리, 이 옵션이 설정되어 있어, 한편 클라이언트 인증 정보가 제공되지 않는 경우는, 협상이 정지해, 접속이 절단 됩니다.
이 메소드를 호출하면(자), 지금까지 이 메소드 또는 setWantClientAuth(boolean)
에 의해 설정된 내용이 오버라이드(override) 됩니다.
need
- 클라이언트 인증이 필수의 경우는 true, 클라이언트 인증이 불필요한 경우는 false. getNeedClientAuth()
,
setWantClientAuth(boolean)
,
getWantClientAuth()
,
setUseClientMode(boolean)
public abstract boolean getNeedClientAuth()
setNeedClientAuth(boolean)
,
setWantClientAuth(boolean)
,
getWantClientAuth()
,
setUseClientMode(boolean)
public abstract void setWantClientAuth(boolean want)
소켓의 클라이언트 인증 설정은, 다음의 어느 쪽인가에 됩니다.
setNeedClientAuth(boolean)
와 달리, 이 옵션이 설정되어 있어, 한편 클라이언트 인증 정보가 제공되지 않는 경우에서도, 협상은 속행됩니다.
이 메소드를 호출하면(자), 지금까지 이 메소드 또는 setNeedClientAuth(boolean)
에 의해 설정된 내용이 오버라이드(override) 됩니다.
want
- 클라이언트 인증이 요구되었을 경우는 true, 클라이언트 인증이 불필요한 경우는 false. getWantClientAuth()
,
setNeedClientAuth(boolean)
,
getNeedClientAuth()
,
setUseClientMode(boolean)
public abstract boolean getWantClientAuth()
setNeedClientAuth(boolean)
,
getNeedClientAuth()
,
setWantClientAuth(boolean)
,
setUseClientMode(boolean)
public abstract void setEnableSessionCreation(boolean flag)
flag
- 세션을 작성할 수 있는 경우는 true (디폴트). 기존의 세션을 재개하는 경우는 falsegetEnableSessionCreation()
public abstract boolean getEnableSessionCreation()
setEnableSessionCreation(boolean)
public SSLParameters getSSLParameters()
public void setSSLParameters(SSLParameters params)
이것은 다음 일을 의미합니다.
params.getCipherSuites()
가 null 이외의 경우, 그 값을 사용해 setEnabledCipherSuites()
가 불려 간다
params.getProtocols()
가 null 이외의 경우, 그 값을 사용해 setEnabledProtocols()
가 불려 간다
params.getNeedClientAuth()
또는 params.getWantClientAuth()
가 true
를 돌려주는 경우, 각각 setNeedClientAuth(true)
또는 setWantClientAuth(true)
가 불려 간다. 그렇지 않은 경우,setWantClientAuth(false)
가 불려 간다.
params
- 파라미터
IllegalArgumentException
- setEnabledCipherSuites() 또는 the setEnabledProtocols()의 호출해에 실패했을 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.