public abstract class StartTlsResponse extends Object implements ExtendedResponse
启动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;
StartTlsRequest
, Serialized Form
Modifier and Type | Field and Description |
---|---|
static String |
OID
StartTLS扩展响应的分配对象标识符为1.3.6.1.4.1.1466.20037。
|
Modifier | Constructor and Description |
---|---|
protected |
StartTlsResponse()
构建一个StartTLS扩展响应。
|
Modifier and Type | Method and Description |
---|---|
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(),默认主机名验证失败。
|
public static final String OID
protected StartTlsResponse()
public String getID()
getID
在界面
ExtendedResponse
public byte[] getEncodedValue()
getEncodedValue
在接口
ExtendedResponse
public abstract void setEnabledCipherSuites(String[] suites)
suites
- 要启用的所有密码套件的名称的非空列表。
negotiate()
public abstract void setHostnameVerifier(HostnameVerifier verifier)
verifier
- 非空主机名验证器回调。
negotiate()
public abstract SSLSession negotiate() throws IOException
此方法相当于negotiate(null) 。
IOException
- 如果在建立TLS会话时遇到IO错误。
setEnabledCipherSuites(java.lang.String[])
,
setHostnameVerifier(javax.net.ssl.HostnameVerifier)
public abstract SSLSession negotiate(SSLSocketFactory factory) throws IOException
使用提供的SSL套接字工厂创建SSL套接字,并将其附加到现有连接。 执行TLS握手并返回协商的会话信息。
如果通过setEnabledCipherSuites设置了密码套件,那么在TLS握手开始之前,它们被启用。
在TLS握手完成后执行主机名验证。 默认的主机名验证会根据服务器证书中的主机名信息来匹配服务器的主机名。 如果此验证失败,并且没有通过setHostnameVerifier设置回调,则协商失败。 如果此验证失败并通过setHostnameVerifier设置了回调,则回调用于确定协商成功。
如果发生错误,则SSL套接字将关闭,并引发IOException。 底层连接保持不变。
factory
- 可能为null的SSL套接字工厂要使用。
如果为空,则使用默认的SSL套接字工厂。
IOException
- 如果在建立TLS会话时遇到IO错误。
setEnabledCipherSuites(java.lang.String[])
,
setHostnameVerifier(javax.net.ssl.HostnameVerifier)
public abstract void close() throws IOException
IOException
- 如果在关闭TLS连接时遇到IO错误