java.lang.Object
javax.naming.ldap.StartTlsResponse
- 所有已实现的接口:
Serializable,ExtendedResponse
此类实现 轻型目录访问协议 (v3):传输层安全扩展 中定义的 StartTLS 的 LDAPv3 扩展响应。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
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract voidclose()优雅地关闭 TLS 连接并恢复到基础连接。byte[]检索 StartTLS 响应的 ASN.1 BER 编码值。getID()检索 StartTLS 响应的对象标识符字符串。abstract SSLSession使用默认的 SSL 套接字工厂协商 TLS 会话。abstract SSLSessionnegotiate(SSLSocketFactory factory) 使用 SSL 套接字工厂协商 TLS 会话。abstract voidsetEnabledCipherSuites(String[] suites) 重写为在 TLS 连接上使用而启用的默认密码套件列表。abstract voidsetHostnameVerifier(HostnameVerifier verifier) 在 TLS 握手完成且默认主机名验证失败后,设置negotiate()使用的主机名验证器。
-
字段详细信息
-
OID
StartTLS 扩展响应的分配对象标识符是 1.3.6.1.4.1.1466.20037。- 参见:
-
-
构造方法详细信息
-
StartTlsResponse
protected StartTlsResponse()构造 StartTLS 扩展响应。具体的子类必须有一个公共的无参数构造方法。
-
-
方法详情
-
getID
检索 StartTLS 响应的对象标识符字符串。- 指定者:
getID在接口ExtendedResponse中- 返回:
- 对象标识符字符串“1.3.6.1.4.1.1466.20037”。
-
getEncodedValue
public byte[] getEncodedValue()检索 StartTLS 响应的 ASN.1 BER 编码值。由于响应没有定义值,因此始终返回 null。- 指定者:
getEncodedValue在接口ExtendedResponse中- 返回:
- 空值。
-
setEnabledCipherSuites
覆盖为在 TLS 连接上使用而启用的默认密码套件列表。密码套件必须已被SSLSocketFactory.getSupportedCipherSuites()列为受支持。即使启用了一个套件,它仍然可能无法使用,因为对等方不支持它,或者因为必需的证书(和私钥)不可用。- 参数:
suites- 要启用的所有密码套件的非空名称列表。- 参见:
-
setHostnameVerifier
在 TLS 握手完成且默认主机名验证失败后,设置negotiate()使用的主机名验证器。必须在调用negotiate()之前调用setHostnameVerifier()才能生效。如果在negotiate()之后调用,此方法不会执行任何操作。- 参数:
verifier- 非空主机名验证器回调。- 参见:
-
negotiate
使用默认的 SSL 套接字工厂协商 TLS 会话。此方法等效于
negotiate(null)。- 返回:
- 协商的 SSL 会话
- 抛出:
IOException- 如果在建立 TLS 会话时遇到 IO 错误。- 参见:
-
negotiate
使用 SSL 套接字工厂协商 TLS 会话。使用提供的 SSL 套接字工厂创建 SSL 套接字并将其附加到现有连接。执行 TLS 握手并返回协商的会话信息。
如果已通过
setEnabledCipherSuites设置密码套件,则在 TLS 握手开始之前启用它们。主机名验证在 TLS 握手完成后执行。默认主机名验证执行服务主机名与服务证书中找到的主机名信息的匹配。如果此验证失败并且未通过
setHostnameVerifier设置回调,则协商失败。如果此验证失败并且已通过setHostnameVerifier设置回调,则使用回调来确定协商是否成功。如果发生错误,则关闭 SSL 套接字并抛出 IOException。底层连接保持不变。
- 参数:
factory- 要使用的可能为空的 SSL 套接字工厂。如果为空,则使用默认的 SSL 套接字工厂。- 返回:
- 协商的 SSL 会话
- 抛出:
IOException- 如果在建立 TLS 会话时遇到 IO 错误。- 参见:
-
close
优雅地关闭 TLS 连接并恢复到基础连接。- 抛出:
IOException- 如果在关闭 TLS 连接时遇到 IO 错误
-