模块 java.naming

类 StartTlsResponse

java.lang.Object
javax.naming.ldap.StartTlsResponse
所有已实现的接口:
Serializable , ExtendedResponse

public abstract class StartTlsResponse extends Object implements 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
参见:
  • 字段详细信息

    • OID

      public static final String  OID
      StartTLS 扩展响应的分配对象标识符是 1.3.6.1.4.1.1466.20037。
      参见:
  • 构造方法详细信息

    • StartTlsResponse

      protected StartTlsResponse()
      构造 StartTLS 扩展响应。具体的子类必须有一个公共的无参数构造方法。
  • 方法详情

    • getID

      public String  getID()
      检索 StartTLS 响应的对象标识符字符串。
      指定者:
      getID 在接口 ExtendedResponse
      返回:
      对象标识符字符串“1.3.6.1.4.1.1466.20037”。
    • getEncodedValue

      public byte[] getEncodedValue()
      检索 StartTLS 响应的 ASN.1 BER 编码值。由于响应没有定义值,因此始终返回 null。
      指定者:
      getEncodedValue 在接口 ExtendedResponse
      返回:
      空值。
    • setEnabledCipherSuites

      public abstract void setEnabledCipherSuites(String [] suites)
      覆盖为在 TLS 连接上使用而启用的默认密码套件列表。密码套件必须已被 SSLSocketFactory.getSupportedCipherSuites() 列为受支持。即使启用了一个套件,它仍然可能无法使用,因为对等方不支持它,或者因为必需的证书(和私钥)不可用。
      参数:
      suites - 要启用的所有密码套件的非空名称列表。
      参见:
    • setHostnameVerifier

      public abstract void setHostnameVerifier(HostnameVerifier  verifier)
      在 TLS 握手完成且默认主机名验证失败后,设置 negotiate() 使用的主机名验证器。必须在调用 negotiate() 之前调用 setHostnameVerifier() 才能生效。如果在 negotiate() 之后调用,此方法不会执行任何操作。
      参数:
      verifier - 非空主机名验证器回调。
      参见:
    • negotiate

      public abstract SSLSession  negotiate() throws IOException
      使用默认的 SSL 套接字工厂协商 TLS 会话。

      此方法等效于 negotiate(null)

      返回:
      协商的 SSL 会话
      抛出:
      IOException - 如果在建立 TLS 会话时遇到 IO 错误。
      参见:
    • negotiate

      public abstract SSLSession  negotiate(SSLSocketFactory  factory) throws IOException
      使用 SSL 套接字工厂协商 TLS 会话。

      使用提供的 SSL 套接字工厂创建 SSL 套接字并将其附加到现有连接。执行 TLS 握手并返回协商的会话信息。

      如果已通过 setEnabledCipherSuites 设置密码套件,则在 TLS 握手开始之前启用它们。

      主机名验证在 TLS 握手完成后执行。默认主机名验证执行服务主机名与服务证书中找到的主机名信息的匹配。如果此验证失败并且未通过 setHostnameVerifier 设置回调,则协商失败。如果此验证失败并且已通过 setHostnameVerifier 设置回调,则使用回调来确定协商是否成功。

      如果发生错误,则关闭 SSL 套接字并抛出 IOException。底层连接保持不变。

      参数:
      factory - 要使用的可能为空的 SSL 套接字工厂。如果为空,则使用默认的 SSL 套接字工厂。
      返回:
      协商的 SSL 会话
      抛出:
      IOException - 如果在建立 TLS 会话时遇到 IO 错误。
      参见:
    • close

      public abstract void close() throws IOException
      优雅地关闭 TLS 连接并恢复到基础连接。
      抛出:
      IOException - 如果在关闭 TLS 连接时遇到 IO 错误