|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.naming.ldap
类 StartTlsResponse
java.lang.Object javax.naming.ldap.StartTlsResponse
- 所有已实现的接口:
- Serializable, ExtendedResponse
-
public abstract class StartTlsResponse
- extends Object
- implements ExtendedResponse
此类实现在 Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security 中定义的 StartTLS 的 LDAPv3 扩展响应。 StartTLS 的对象标识符为 1.3.6.1.4.1.1466.20037,没有定义任何扩展响应值。
使用 Start TLS 扩展请求和响应在与 JNDI 上下文(对该上下文调用 extendedOperation())关联的现有 LDAP 连接上建立 TLS 连接。通常,JNDI 程序使用以下 Start TLS 扩展请求和响应类。
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
, 序列化表格
字段摘要 | |
---|---|
static String |
OID StartTLS 扩展响应的分配对象标识符为 1.3.6.1.4.1.1466.20037。 |
构造方法摘要 | |
---|---|
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() 使用的主机名校验器。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
OID
public static final String OID
-
StartTLS 扩展响应的分配对象标识符为 1.3.6.1.4.1.1466.20037。
- 另请参见:
- 常量字段值
构造方法详细信息 |
---|
StartTlsResponse
protected StartTlsResponse()
- 构造 StartTLS 扩展响应。具体子类必须具有不带参数的公共构造方法。
方法详细信息 |
---|
getID
public String getID()
- 检索 StartTLS 响应的对象标识符字符串。
-
- 指定者:
-
接口
ExtendedResponse
中的getID
-
- 返回:
- 对象标识符字符串 "1.3.6.1.4.1.1466.20037"。
getEncodedValue
public byte[] getEncodedValue()
- 检索 StartTLS 响应的 ASN.1 BER 编码值。因为响应没有定义任何值,所以始终返回 null。
-
- 指定者:
-
接口
ExtendedResponse
中的getEncodedValue
-
- 返回:
- null 值。
setEnabledCipherSuites
public abstract void setEnabledCipherSuites(String[] suites)
- 重写在 TLS 连接上启用的密码套件的默认列表。密码套件必须已经作为受支持的项由 SSLSocketFactory.getSupportedCipherSuites() 列出。即使已经启用套件,它仍然有可能不可用,因为有可能同位体不支持它,或者必需的证书(或私钥)不可用。
-
-
- 参数:
-
suites
- 要启用的所有密码套件的非 null 名称列表。 - 另请参见:
-
negotiate()
setHostnameVerifier
public abstract void setHostnameVerifier(HostnameVerifier verifier)
- 设置在已完成 TLS 握手且默认主机名校验失败后供 negotiate() 使用的主机名校验器。setHostnameVerifier() 必须在调用 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)。如果为 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 错误