- java.lang.Object
-
- javax.naming.ldap.StartTlsResponse
-
- 实现的所有接口
-
Serializable
,ExtendedResponse
public abstract class StartTlsResponse extends Object implements ExtendedResponse
此类实现StartvLS的LDAPv3扩展响应,如Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security中所定义.StartTLS的对象标识符为1.3.6.1.4.1.1466.20037,并且未定义扩展响应值。Start TLS扩展请求和响应用于通过与调用
extendedOperation()
的JNDI上下文关联的现有LDAP连接建立TLS连接。 通常,JNDI程序使用StartTLS扩展请求和响应类,如下所示。import javax.naming.ldap.*; // Open an LDAP association LdapContext ctx = new InitialLdapContext(); // Perform a StartTLS extended operation StartTlsResponse tls = (StartTlsResponse) ctx.extendedOperation(new StartTlsRequest()); // Open a TLS connection (over the existing LDAP association) and get details // of the negotiated TLS session: cipher suite, peer certificate, ... SSLSession session = tls.negotiate(); // ... use ctx to perform protected LDAP operations // Close the TLS connection (revert back to the underlying LDAP association) tls.close(); // ... use ctx to perform unprotected LDAP operations // Close the LDAP association ctx.close;
- 从以下版本开始:
- 1.4
- 另请参见:
-
StartTlsRequest
, Serialized Form
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
StartTlsResponse()
构造一个StartTLS扩展响应。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract void
close()
正常关闭TLS连接并恢复为基础连接。byte[]
getEncodedValue()
检索StartTLS响应的ASN.1 BER编码值。String
getID()
检索StartTLS响应的对象标识符字符串。abstract SSLSession
negotiate()
使用默认的SSL套接字工厂协商TLS会话。abstract SSLSession
negotiate(SSLSocketFactory factory)
使用SSL套接字工厂协商TLS会话。abstract void
setEnabledCipherSuites(String[] suites)
覆盖启用以在TLS连接上使用的默认密码套件列表。abstract void
setHostnameVerifier(HostnameVerifier verifier)
在TLS握手完成且默认主机名验证失败后,设置negotiate()
使用的主机名验证程序。
-
-
-
方法详细信息
-
getID
public String getID()
检索StartTLS响应的对象标识符字符串。- Specified by:
-
getID
在界面ExtendedResponse
- 结果
- 对象标识符字符串“1.3.6.1.4.1.1466.20037”。
-
getEncodedValue
public byte[] getEncodedValue()
检索StartTLS响应的ASN.1 BER编码值。 由于响应没有定义的值,因此始终返回null。- Specified by:
-
getEncodedValue
接口ExtendedResponse
- 结果
- 空值。
-
setEnabledCipherSuites
public abstract void setEnabledCipherSuites(String[] suites)
覆盖启用以在TLS连接上使用的默认密码套件列表。 密码套件必须已被SSLSocketFactory.getSupportedCipherSuites()
列为支持。 即使已启用套件,仍可能因为对等方不支持它,或者因为必需的证书(和私钥)不可用而仍未使用它。- 参数
-
suites
- 要启用的所有密码套件的非空名称列表。 - 另请参见:
-
negotiate()
-
setHostnameVerifier
public abstract void setHostnameVerifier(HostnameVerifier verifier)
在TLS握手完成且默认主机名验证失败后,设置negotiate()
使用的主机名验证程序。setHostnameVerifier()
必须之前调用negotiate()
被调用它具有效力。 如果在negotiate()
之后negotiate()
,则此方法不执行任何操作。- 参数
-
verifier
- 非null主机名验证程序回调。 - 另请参见:
-
negotiate()
-
negotiate
public abstract SSLSession negotiate() throws IOException
使用默认的SSL套接字工厂协商TLS会话。此方法相当于
negotiate(null)
。- 结果
- 协商的SSL会话
- 异常
-
IOException
- 如果在建立TLS会话时遇到IO错误。 - 另请参见:
-
setEnabledCipherSuites(java.lang.String[])
,setHostnameVerifier(javax.net.ssl.HostnameVerifier)
-
negotiate
public abstract SSLSession negotiate(SSLSocketFactory factory) throws IOException
使用SSL套接字工厂协商TLS会话。使用提供的SSL套接字工厂创建SSL套接字,并将其附加到现有连接。 执行TLS握手并返回协商的会话信息。
如果通过
setEnabledCipherSuites
设置了密码套件,则在TLS握手开始之前启用密码套件。在TLS握手完成后执行主机名验证。 默认主机名验证将服务器主机名与服务器证书中的主机名信息进行匹配。 如果此验证失败且未通过
setHostnameVerifier
设置回调,则协商失败。 如果此验证失败并且已通过setHostnameVerifier
设置回调,则回调用于确定协商是否成功。如果发生错误,则关闭SSL套接字并抛出IOException。 基础连接保持不变。
- 参数
-
factory
- 要使用的可能为空的SSL套接字工厂。 如果为null,则使用默认的SSL套接字工厂。 - 结果
- 协商的SSL会话
- 异常
-
IOException
- 如果在建立TLS会话时遇到IO错误。 - 另请参见:
-
setEnabledCipherSuites(java.lang.String[])
,setHostnameVerifier(javax.net.ssl.HostnameVerifier)
-
close
public abstract void close() throws IOException
正常关闭TLS连接并恢复为基础连接。- 异常
-
IOException
- 如果在关闭TLS连接时遇到IO错误
-
-