Class HtmlUnitSSLConnectionSocketFactory

  • All Implemented Interfaces:
    org.apache.http.conn.socket.ConnectionSocketFactory, org.apache.http.conn.socket.LayeredConnectionSocketFactory

    public final class HtmlUnitSSLConnectionSocketFactory
    extends org.apache.http.conn.ssl.SSLConnectionSocketFactory
    Socket factory offering facilities for insecure SSL and for SOCKS proxy support. This looks rather like a hack than like clean code but at the time of the writing it seems to be the easiest way to provide SOCKS proxy support for HTTPS.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.String SSL3ONLY  
      private boolean useInsecureSSL_  
      • Fields inherited from class org.apache.http.conn.ssl.SSLConnectionSocketFactory

        ALLOW_ALL_HOSTNAME_VERIFIER, BROWSER_COMPATIBLE_HOSTNAME_VERIFIER, SSL, SSLV2, STRICT_HOSTNAME_VERIFIER, TLS
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private HtmlUnitSSLConnectionSocketFactory​(java.security.KeyStore keystore, char[] keystorePassword, java.security.KeyStore truststore, boolean useInsecureSSL, java.lang.String[] supportedProtocols, java.lang.String[] supportedCipherSuites)  
      private HtmlUnitSSLConnectionSocketFactory​(javax.net.ssl.SSLContext sslContext, javax.net.ssl.HostnameVerifier hostnameVerifier, boolean useInsecureSSL, java.lang.String[] supportedProtocols, java.lang.String[] supportedCipherSuites)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static org.apache.http.conn.ssl.SSLConnectionSocketFactory buildSSLSocketFactory​(WebClientOptions options)
      Factory method that builds a new SSLConnectionSocketFactory.
      private static void configureSocket​(javax.net.ssl.SSLSocket sslSocket, org.apache.http.protocol.HttpContext context)  
      java.net.Socket connectSocket​(int connectTimeout, java.net.Socket socket, org.apache.http.HttpHost host, java.net.InetSocketAddress remoteAddress, java.net.InetSocketAddress localAddress, org.apache.http.protocol.HttpContext context)
      Connect via socket.
      private static javax.net.ssl.KeyManager[] getKeyManagers​(WebClientOptions options)  
      private javax.net.ssl.SSLSocketFactory getSSLSocketFactory()  
      (package private) static boolean isUseSSL3Only​(org.apache.http.protocol.HttpContext context)  
      private static void setEmptyHostname​(org.apache.http.HttpHost host)  
      static void setUseSSL3Only​(org.apache.http.protocol.HttpContext httpContext, boolean ssl3Only)
      Enables/Disables the exclusive usage of SSL3.
      • Methods inherited from class org.apache.http.conn.ssl.SSLConnectionSocketFactory

        createLayeredSocket, createSocket, getDefaultHostnameVerifier, getSocketFactory, getSystemSocketFactory, prepareSocket
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • useInsecureSSL_

        private final boolean useInsecureSSL_
    • Constructor Detail

      • HtmlUnitSSLConnectionSocketFactory

        private HtmlUnitSSLConnectionSocketFactory​(javax.net.ssl.SSLContext sslContext,
                                                   javax.net.ssl.HostnameVerifier hostnameVerifier,
                                                   boolean useInsecureSSL,
                                                   java.lang.String[] supportedProtocols,
                                                   java.lang.String[] supportedCipherSuites)
      • HtmlUnitSSLConnectionSocketFactory

        private HtmlUnitSSLConnectionSocketFactory​(java.security.KeyStore keystore,
                                                   char[] keystorePassword,
                                                   java.security.KeyStore truststore,
                                                   boolean useInsecureSSL,
                                                   java.lang.String[] supportedProtocols,
                                                   java.lang.String[] supportedCipherSuites)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyManagementException,
                                                   java.security.KeyStoreException,
                                                   java.security.UnrecoverableKeyException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyManagementException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
    • Method Detail

      • setUseSSL3Only

        public static void setUseSSL3Only​(org.apache.http.protocol.HttpContext httpContext,
                                          boolean ssl3Only)
        Enables/Disables the exclusive usage of SSL3.
        Parameters:
        httpContext - the http context
        ssl3Only - true or false
      • isUseSSL3Only

        static boolean isUseSSL3Only​(org.apache.http.protocol.HttpContext context)
      • buildSSLSocketFactory

        public static org.apache.http.conn.ssl.SSLConnectionSocketFactory buildSSLSocketFactory​(WebClientOptions options)
        Factory method that builds a new SSLConnectionSocketFactory.
        Parameters:
        options - the current WebClientOptions
        Returns:
        the SSLConnectionSocketFactory
      • configureSocket

        private static void configureSocket​(javax.net.ssl.SSLSocket sslSocket,
                                            org.apache.http.protocol.HttpContext context)
      • connectSocket

        public java.net.Socket connectSocket​(int connectTimeout,
                                             java.net.Socket socket,
                                             org.apache.http.HttpHost host,
                                             java.net.InetSocketAddress remoteAddress,
                                             java.net.InetSocketAddress localAddress,
                                             org.apache.http.protocol.HttpContext context)
                                      throws java.io.IOException
        Connect via socket.
        Specified by:
        connectSocket in interface org.apache.http.conn.socket.ConnectionSocketFactory
        Overrides:
        connectSocket in class org.apache.http.conn.ssl.SSLConnectionSocketFactory
        Parameters:
        connectTimeout - the timeout
        socket - the socket
        host - the host
        remoteAddress - the remote address
        localAddress - the local address
        context - the context
        Returns:
        the created/connected socket
        Throws:
        java.io.IOException - in case of problems
      • setEmptyHostname

        private static void setEmptyHostname​(org.apache.http.HttpHost host)
      • getSSLSocketFactory

        private javax.net.ssl.SSLSocketFactory getSSLSocketFactory()
      • getKeyManagers

        private static javax.net.ssl.KeyManager[] getKeyManagers​(WebClientOptions options)