public abstract class SSLSocket extends Socket
Socketãæ¡åŒµããSecure Sockets Layer (SSL)ãIETF Transport Layer Security (TLS)ãªã©ã®ãããã³ã«ã䜿çšããã»ãã¥ã¢ã»ãœã±ãããæäŸããŸãã
ãããã®ãœã±ããã¯ãéåžžã®ã¹ããªãŒã ã»ãœã±ããã§ãããTCPãªã©ã®ããŒã¹ãšãªããããã¯ãŒã¯ã»ãã©ã³ã¹ããŒãã»ãããã³ã«äžã«ã»ãã¥ãªãã£ä¿è·å±€ã远å ããŸãã æ¬¡ã®ã»ãã¥ãªãã£ä¿è·ãè¡ãããŸãã
ãããã®ã»ãã¥ãªãã£ä¿è·ã¯ããæå·åæ¹åŒçŸ€ãã䜿çšããŠæå®ããŸããæå·åæ¹åŒçŸ€ã¯ãæå®ãããSSLæ¥ç¶ã§äœ¿çšãããæå·åã¢ã«ãŽãªãºã ã®çµåãã§ãã ããŽã·ãšãŒã·ã§ã³åŠçæã«ã¯ã2ã€ã®çµç«¯ãåãæå·åæ¹åŒçŸ€ãéžæãããã®æå·åæ¹åŒçŸ€ãäž¡æ¹ã®ç°å¢ã§äœ¿çšå¯èœã§ããå¿ èŠããããŸãã å ±éã®æå·åæ¹åŒçŸ€ããªãå Žåã¯ãSSLæ¥ç¶ã確ç«ã§ãããããŒã¿ã亀æã§ããŸããã
䜿çšãããæå·åæ¹åŒçŸ€ã¯ãããã³ãã·ã§ãŒã¯ããšåŒã°ããããŽã·ãšãŒã·ã§ã³ã»ããã»ã¹ã«ãã£ãŠç¢ºç«ãããŸãã ãã³ãã·ã§ãŒã¯ã§ã¯ãã»ãã·ã§ã³ã®äœæãŸãã¯ã»ãã·ã§ã³ãžã®åå ãè¡ãããŸãããã®ã»ãã·ã§ã³ã¯ãæéã®çµéãšãšãã«ããŸããŸãªæ¥ç¶ãä¿è·ããŸãã ãã³ãã·ã§ãŒã¯ãå®äºãããšãgetSessionã¡ãœããã䜿çšããŠã»ãã·ã§ã³å±æ§ã«ã¢ã¯ã»ã¹ã§ããŸãã ãã®æ¥ç¶ã®æåã®ãã³ãã·ã§ãŒã¯ã¯ã次ã®3ã€ã®ãã¡ããããã®æ¹æ³ã§éå§ã§ããŸãã
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ãã³ãã·ã§ãŒã¯ã®å®äºéç¥ãåãåãããã®ã€ãã³ãã»ãªã¹ããŒãç»é²ããŸãã
|
String |
getApplicationProtocol() |
ãã®æ¥ç¶ã§ããŽã·ãšãŒããããææ°ã®ã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«å€ãè¿ããŸãã
|
abstract String[] |
getEnabledCipherSuites() |
ãã®æ¥ç¶ã§çŸåšäœ¿çšå¯èœã«ãªã£ãŠããSSLæå·åæ¹åŒçŸ€ã®ååãè¿ããŸãã
|
abstract String[] |
getEnabledProtocols() |
ãã®æ¥ç¶ã«å¯ŸããŠçŸåšäœ¿çšå¯èœã«ãªã£ãŠãããããã³ã«ã®ååãè¿ããŸãã
|
abstract boolean |
getEnableSessionCreation() |
ãã®ãœã±ããã§æ°ããSSLã»ãã·ã§ã³ã確ç«ã§ããå Žåã¯trueãè¿ããŸãã
|
String |
getHandshakeApplicationProtocol() |
çŸåšé²è¡äžã®SSL/TLSãã³ãã·ã§ã€ã¯ã§ããŽã·ãšãŒããããã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«å€ãè¿ããŸãã
|
BiFunction<SSLSocket,List<String>,String> |
getHandshakeApplicationProtocolSelector() |
SSL/TLS/DTLSãã³ãã·ã§ã€ã¯äžã«ã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«å€ãéžæããã³ãŒã«ããã¯é¢æ°ãååŸããŸãã
|
SSLSession |
getHandshakeSession() |
SSL/TLSãã³ãã·ã§ãŒã¯æã«æ§ç¯äžã®
SSLSessionãè¿ããŸãã |
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ã»ãã·ã§ã³ã確ç«ã§ãããã©ãããå¶åŸ¡ããŸãã
|
void |
setHandshakeApplicationProtocolSelector(BiFunction<SSLSocket,List<String>,String> selector) |
SSL/TLS/DTLSãã³ãã·ã§ã€ã¯ã®ã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«å€ãéžæããã³ãŒã«ããã¯é¢æ°ãç»é²ããŸãã
|
abstract void |
setNeedClientAuth(boolean need) |
ã¯ã©ã€ã¢ã³ãèªèšŒãå¿
èŠãªããã«ãœã±ãããæ§æããŸãã
|
void |
setSSLParameters(SSLParameters params) |
ãã®ãœã±ããã«SSLParametersãé©çšããŸãã
|
abstract void |
setUseClientMode(boolean mode) |
ãã³ãã·ã§ãŒã¯æããœã±ãããã¯ã©ã€ã¢ã³ã(ãŸãã¯ãµãŒããŒ)ã¢ãŒãã䜿çšããããã«æ§æããŸãã
|
abstract void |
setWantClientAuth(boolean want) |
ã¯ã©ã€ã¢ã³ãèªèšŒãèŠæ±ããããã«ãœã±ãããæ§æããŸãã
|
abstract void |
startHandshake() |
ãã®æ¥ç¶äžã§SSLãã³ãã·ã§ãŒã¯ãéå§ããŸãã
|
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, toStringprotected SSLSocket()
protected SSLSocket(String host, int port) throws IOException, UnknownHostException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®checkConnectã¡ãœãããããã¹ãã»ã¢ãã¬ã¹ãšportãåŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
host - æ¥ç¶å
ã®ãã¹ãã®ååããŸãã¯ã«ãŒãããã¯ã»ã¢ãã¬ã¹ã®å Žåã¯nullãport - ãµãŒããŒã®ããŒãã®çªæ°IOException - ãœã±ããã®äœææã«å
¥åºåãšã©ãŒãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkConnectã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãUnknownHostException - ãã¹ããäžæã§ããå ŽåIllegalArgumentException - portãã©ã¡ãŒã¿ãæå®ãããæå¹ãªããŒãå€ã®ç¯å²(0ãã65535)å€ã§ããå ŽåãSecurityManager.checkConnect(java.lang.String, int)protected SSLSocket(InetAddress address, int port) throws IOException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®checkConnectã¡ãœãããããã¹ãã»ã¢ãã¬ã¹ãšportãåŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
address - ãµãŒããŒã®ãã¹ãport - ããŒãIOException - ãœã±ããã®äœææã«å
¥åºåãšã©ãŒãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkConnectã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãIllegalArgumentException - portãã©ã¡ãŒã¿ãæå®ãããæå¹ãªããŒãå€ã®ç¯å²(0ãã65535)å€ã§ããå ŽåãNullPointerException - addressãnullã§ããå ŽåãSecurityManager.checkConnect(java.lang.String, int)protected SSLSocket(String host, int port, InetAddress clientAddress, int clientPort) throws IOException, UnknownHostException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®checkConnectã¡ãœãããããã¹ãã»ã¢ãã¬ã¹ãšportãåŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
host - æ¥ç¶å
ã®ãã¹ãã®ååããŸãã¯ã«ãŒãããã¯ã»ã¢ãã¬ã¹ã®å Žåã¯nullãport - ãµãŒããŒã®ããŒãã®çªæ°clientAddress - ãœã±ããã®ãã€ã³ãå
ã®ã¯ã©ã€ã¢ã³ãã®ã¢ãã¬ã¹ããŸãã¯anyLocalã¢ãã¬ã¹ã®å Žåã¯nullãclientPort - ãœã±ããã®ãã€ã³ãå
ã®ã¯ã©ã€ã¢ã³ãã®ããŒãããŸãã¯ã·ã¹ãã ã§éžæããã空ããŠããããŒãã®å Žåã¯zeroãIOException - ãœã±ããã®äœææã«å
¥åºåãšã©ãŒãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkConnectã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãUnknownHostException - ãã¹ããäžæã§ããå ŽåIllegalArgumentException - portãã©ã¡ãŒã¿ãŸãã¯clientPortãã©ã¡ãŒã¿ãæå®ãããæå¹ãªããŒãå€ã®ç¯å²(0ãã65535ãŸã§)ã«ãªãå ŽåãSecurityManager.checkConnect(java.lang.String, int)protected SSLSocket(InetAddress address, int port, InetAddress clientAddress, int clientPort) throws IOException
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®checkConnectã¡ãœãããããã¹ãã»ã¢ãã¬ã¹ãšportãåŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
address - ãµãŒããŒã®ãã¹ãport - ããŒãclientAddress - ãœã±ããã®ãã€ã³ãå
ã®ã¯ã©ã€ã¢ã³ãã®ã¢ãã¬ã¹ããŸãã¯anyLocalã¢ãã¬ã¹ã®å Žåã¯nullãclientPort - ãœã±ããã®ãã€ã³ãå
ã®ã¯ã©ã€ã¢ã³ãã®ããŒãããŸãã¯ã·ã¹ãã ã§éžæããã空ããŠããããŒãã®å Žåã¯zeroãIOException - ãœã±ããã®äœææã«å
¥åºåãšã©ãŒãçºçããå ŽåSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkConnectã¡ãœããã§ãã®æäœãèš±å¯ãããŠããªãå ŽåãIllegalArgumentException - portãã©ã¡ãŒã¿ãŸãã¯clientPortãã©ã¡ãŒã¿ãæå®ãããæå¹ãªããŒãå€ã®ç¯å²(0ãã65535ãŸã§)ã«ãªãå ŽåãNullPointerException - addressãnullã§ããå ŽåãSecurityManager.checkConnect(java.lang.String, int)public abstract String[] getSupportedCipherSuites()
getEnabledCipherSuites(), setEnabledCipherSuites(String [])public abstract String[] getEnabledCipherSuites()
æå·åæ¹åŒçŸ€ã¯ãããšãæå¹ã§ã䜿çšãããªãããšããããŸãã ããšãã°ããã¢ãæå·åæ¹åŒçŸ€ããµããŒãããªãå Žåããã®æå·åæ¹åŒçŸ€ã«å¿ èŠãªèšŒææž(ããã³éå ¬éããŒ)ã䜿çšããããšãã§ããªãå ŽåããŸãã¯ãå¿åã®æå·åæ¹åŒçŸ€ãå©çšå¯èœã§ãã£ãŠãèªèšŒãèŠæ±ãããå Žåãªã©ã§ãã
getSupportedCipherSuites(), setEnabledCipherSuites(String [])public abstract void setEnabledCipherSuites(String[] suites)
suitesãã©ã¡ãŒã¿å
ã®åæå·åæ¹åŒçŸ€ã¯getSupportedCipherSuites()ã§ãªã¹ããããŠããå¿
èŠããããŸããããã§ãªãå Žåããã®ã¡ãœããã¯å€±æããŸãã ãã®ã¡ãœããã®åŒåºããæåããããšãsuitesãã©ã¡ãŒã¿ã«ç€ºãããŠããæå·åæ¹åŒçŸ€ã®ã¿ã䜿çšå¯èœã«ãªããŸãã
ãªãç¹å®ã®æå·åæ¹åŒçŸ€ãæ¥ç¶ã§äœ¿çšããããšãã§ããªããã«ã€ããŠã¯ãgetEnabledCipherSuites()ãåç
§ããŠãã ããã
suites - æå¹ã«ãããã¹ãŠã®æå·åæ¹åŒçŸ€ã®ååIllegalArgumentException - ãã©ã¡ãŒã¿ã§æå®ãããæå·åæ¹åŒçŸ€ã®1ã€ä»¥äžããµããŒããããŠããªããããŸãã¯ãã©ã¡ãŒã¿ãnullã§ããå ŽåãgetSupportedCipherSuites(), getEnabledCipherSuites()public abstract String[] getSupportedProtocols()
public abstract String[] getEnabledProtocols()
setEnabledProtocols(String [])public abstract void setEnabledProtocols(String[] protocols)
ãããã³ã«ã¯ãgetSupportedProtocols()ã«ããããµããŒã察象ãšããŠãªã¹ããããŠããªããã°ãããŸããã ãã®ã¡ãœããã®åŒåºããæåããããšãprotocolsãã©ã¡ãŒã¿ã«ç€ºãããŠãããããã³ã«ã®ã¿ã䜿çšå¯èœã«ãªããŸãã
protocols - æå¹ã«ãããã¹ãŠã®ãããã³ã«ã®ååãIllegalArgumentException - ãã©ã¡ãŒã¿ã§æå®ããããããã³ã«ã®1ã€ä»¥äžããµããŒããããŠããªããããŸãã¯protocolsãã©ã¡ãŒã¿ãnullã§ããå ŽåãgetEnabledProtocols()public abstract SSLSession getSession()
ãã®ã¡ãœããã¯ãå¿ èŠã«å¿ããŠåæãã³ãã·ã§ãŒã¯ãéå§ãããã³ãã·ã§ãŒã¯ã確ç«ãããšãã«ãããã¯ãè§£é€ããŸãã
åæãã³ãã·ã§ãŒã¯ã§ãšã©ãŒãçºçãããšãç¡å¹ãªã»ãã·ã§ã³ã»ãªããžã§ã¯ããè¿ããããSSL_NULL_WITH_NULL_NULLããšããç¡å¹ãªæå·åæ¹åŒçŸ€ãå ±åãããŸãã
SSLSessionpublic SSLSession getHandshakeSession()
SSLSessionãè¿ããŸãã
TLSãããã³ã«ã§ã¯ããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠãããšãããã ãSSLSessionãå®å
šã«åæåãããgetSessionã«ãã£ãŠäœ¿çšå¯èœã«ãªãåã«å¿
èŠãªãã©ã¡ãŒã¿ã®ããŽã·ãšãŒã·ã§ã³ãè¡ãå¯èœæ§ããããŸãã ããšãã°ãæå¹ãªã·ã°ããã£ã»ã¢ã«ãŽãªãºã ã®ãªã¹ãã§ã¯ãTrustManagerã®ãã£ã·ãžã§ã³æã«äœ¿çšã§ããèšŒææžã®ã¿ã€ããå¶éããããTLSãã©ã°ã¡ã³ãã»ãã±ããã»ãµã€ãºã®æå€§å€ããããã¯ãŒã¯ç°å¢ããããµããŒãããããã«ãµã€ãºå€æŽãããã§ããŸãã
ãã®ã¡ãœããã§ã¯ãæ§ç¯ãããŠããSSLSessionã«æ©æã«ã¢ã¯ã»ã¹ã§ããŸãã ãã³ãã·ã§ãŒã¯ã®é²æç¶æ³ã«ãã£ãŠã¯ãäžéšã®ããŒã¿ããŸã 䜿çšã§ããªãå¯èœæ§ããããŸãã ããšãã°ããªã¢ãŒãã»ãµãŒããŒãèšŒææžãã§ãŒã³ãéä¿¡ããããšããŠãããããã®ãã§ãŒã³ããŸã åŠçãããŠããªãå ŽåãSSLSessionã®getPeerCertificatesã¡ãœããã¯SSLPeerUnverifiedExceptionãã¹ããŒããŸãã ãã®ãã§ãŒã³ã®åŠçãå®äºãããšãgetPeerCertificatesã¯é©åãªå€ãè¿ããŸãã
getSession()ãšã¯ç°ãªãããã®ã¡ãœããã¯æåã®ãã³ãã·ã§ãŒã¯ãéå§ããããã³ãã·ã§ãŒã¯ãå®äºãããŸã§ãããã¯ããŸããã
SSLSessionãè¿ããŸãã UnsupportedOperationException - ããŒã¹ãšãªããããã€ãããã®æäœãå®è£
ããŠããªãå ŽåãSSLEngine, SSLSession, ExtendedSSLSession, X509ExtendedKeyManager, X509ExtendedTrustManagerpublic 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ãã¹ããŒããŸãã
IOException - ãããã¯ãŒã¯ã»ã¬ãã«ã®ãšã©ãŒaddHandshakeCompletedListener(HandshakeCompletedListener)public abstract void setUseClientMode(boolean mode)
ãã®ã¡ãœããã¯ããã¹ãŠã®ãã³ãã·ã§ãŒã¯ã®åã«åŒã³åºãå¿ èŠããããŸãã ãã£ãããã³ãã·ã§ãŒã¯ãéå§ããããšããã®ãœã±ããã®å¯¿åœãå°œãããŸã§ãçŸåšã®ã¢ãŒãããªã»ããããããšã¯ã§ããŸããã
éåžžããµãŒããŒã¯èªèº«ãèªèšŒããŸãããã¯ã©ã€ã¢ã³ãã¯å¿ ããããããšã¯ããããŸããã
mode - ãã³ãã·ã§ãŒã¯ãã¯ã©ã€ã¢ã³ãã»ã¢ãŒãã§éå§ããå Žåã¯trueIllegalArgumentException - æåã®ãã³ãã·ã§ãŒã¯ãéå§ãããŠããã¢ãŒãã倿Žããããšããå ŽåãgetUseClientMode()public abstract boolean getUseClientMode()
setUseClientMode(boolean)public abstract void setNeedClientAuth(boolean need)
ãœã±ããã®ã¯ã©ã€ã¢ã³ãèªèšŒèšå®ã¯ã次ã®ããããã«ãªããŸãã
setWantClientAuth(boolean)ãšç°ãªãããã®ãªãã·ã§ã³ãèšå®ãããŠããŠããã€ã¯ã©ã€ã¢ã³ãèªèšŒæ
å ±ãæäŸãããªãå Žåã¯ãããŽã·ãšãŒã·ã§ã³ã忢ããæ¥ç¶ãåæãããŸãã
ãã®ã¡ãœãããåŒã³åºããšããã®ã¡ãœãããŸãã¯setWantClientAuth(boolean)ã«ãã£ãŠè¡ããã以åã®èšå®ããã¹ãŠãªãŒããŒã©ã€ããããŸãã
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)ã«ãã£ãŠè¡ããã以åã®èšå®ããã¹ãŠãªãŒããŒã©ã€ããããŸãã
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.getServerNames()ãnull以å€ã®å Žåããœã±ããã¯ãµãŒããŒåããã®å€ã§æ§æãããparams.getSNIMatchers()ãnull以å€ã®å Žåããœã±ããã¯SNIãããã£ããã®å€ã§æ§æãããparams - ãã©ã¡ãŒã¿IllegalArgumentException - setEnabledCipherSuites()ãŸãã¯setEnabledProtocols()ã®åŒåºãã倱æããå Žåpublic String getApplicationProtocol()
åºã«ãªãSSL/TLS/DTLSå®è£ ã§ãµããŒããããŠããå ŽåãRFC 7301ãã¢ããªã±ãŒã·ã§ã³å±€ãããã³ã«ã»ããŽã·ãšãŒã·ã§ã³(ALPN)ãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã»ããŒã ã»ããŽã·ãšãŒã·ã§ã³ã»ã¡ã«ããºã ã¯ããã¢éã®ã¢ããªã±ãŒã·ã§ã³ã»ã¬ãã«ã®å€ãããŽã·ãšãŒãã§ããŸãã
UnsupportedOperationExceptionãã¹ããŒããä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãããStringãå€ãæ£åžžã«ããŽã·ãšãŒããããå Žåã¯ç©ºã®ã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«StringãUnsupportedOperationException - ããŒã¹ãšãªããããã€ãããã®æäœãå®è£
ããŠããªãå Žåãpublic String getHandshakeApplicationProtocol()
getHandshakeSession()ãšåæ§ã«ãæ¥ç¶ã¯ãã³ãã·ã§ã€ã¯ã®éäžã«ããå¯èœæ§ããããŸãã ã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«ã¯ãŸã å©çšå¯èœã§ãããããããªãããå©çšå¯èœã§ãªããããããŸããã
UnsupportedOperationExceptionãã¹ããŒããä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãããStringãå€ãæ£åžžã«ããŽã·ãšãŒããããå Žåã¯ç©ºã§ã¯ãªãã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«StringãUnsupportedOperationException - ããŒã¹ãšãªããããã€ãããã®æäœãå®è£
ããŠããªãå Žåãpublic void setHandshakeApplicationProtocolSelector(BiFunction<SSLSocket,List<String>,String> selector)
SSLParameters.setApplicationProtocolsã䜿çšããŠæå®ãããå€ããªãŒããŒã©ã€ãããæ¬¡ã®åãã©ã¡ãŒã¿ããµããŒãããŸã:
ããšãã°ã次ã®åŒã³åºãã¯ãTLSãã³ãã·ã§ã€ã¯ã»ãã©ã¡ãŒã¿ã調ã¹ãŠã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«åãéžæããã³ãŒã«ããã¯é¢æ°ãç»é²ããŸã:
SSLSocket- æåã®åŒæ°ã¯ããã³ãã·ã§ãŒã¯ã»ã»ãã·ã§ã³ãæ§æãå«ããçŸåšã®
SSLSocketãæ€æ»ã§ããããã«ããŸããList<String>- 颿°ã®ç¬¬2åŒæ°ã¯ãTLSãã¢ã«ãã£ãŠéç¥ãããã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«åããªã¹ãããŸãã
String- 颿°ã®çµæã¯ã¢ããªã±ãŒã·ã§ã³ã®ãããã³ã«åã§ããã宣èšãããååã®ã©ããåãå ¥ããããªãããšã瀺ãããã«ã¯nullã§ãã æ»ãå€ã空ã®
Stringã®å Žåãã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«ã®æç€ºã¯äœ¿çšãããŸããã æ»ãå€ãnull (å€ãéžæãããŠããªã)ãŸãã¯ãã¢ã«ãã£ãŠå®£èšãããŠããªãå€ã§ããå Žåãåºã«ãªããããã³ã«ã¯ãå®è¡ããã¢ã¯ã·ã§ã³ã決å®ããŸãã (ããšãã°ãALPNã¯"no_application_protocol"ã¢ã©ãŒããéä¿¡ããæ¥ç¶ãçµäºããŸãã)
serverSocket.setHandshakeApplicationProtocolSelector(
(serverSocket, clientProtocols) -> {
SSLSession session = serverSocket.getHandshakeSession();
return chooseApplicationProtocol(
serverSocket,
clientProtocols,
session.getProtocol(),
session.getCipherSuite());
});
ãã®ã¡ãœããã¯ãTLSãã³ãã·ã§ã€ã¯ãéå§ãããåã«TLSãµãŒããŒã»ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠåŒã³åºãããå¿
èŠããããŸãã ãŸãããã®SSLSocketã¯ãã³ãŒã«ããã¯é¢æ°ã§éžæãããã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«ãšäºææ§ã®ãããã©ã¡ãŒã¿ã§æ§æããå¿
èŠããããŸãã ããšãã°ãæå·ã¹ã€ãŒãã®éžæè¢ã誀ããšãé©åãªã¢ããªã±ãŒã·ã§ã³ã»ãããã³ã«ãåŸãããªãå¯èœæ§ããããŸãã SSLParametersãåç
§ããŠãã ããã
UnsupportedOperationExceptionãã¹ããŒããä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãããselector - ã³ãŒã«ããã¯é¢æ°ããŸãã¯ç»é²è§£é€ã®å Žåã¯nullãUnsupportedOperationException - ããŒã¹ãšãªããããã€ãããã®æäœãå®è£
ããŠããªãå Žåãpublic BiFunction<SSLSocket,List<String>,String> getHandshakeApplicationProtocolSelector()
setHandshakeApplicationProtocolSelectorãåç
§ããŠãã ããã UnsupportedOperationExceptionãã¹ããŒããä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãããUnsupportedOperationException - ããŒã¹ãšãªããããã€ãããã®æäœãå®è£
ããŠããªãå Žåã ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã