org.apache.jmeter.util

## Class SSLManager

- java.lang.Object
- - org.apache.jmeter.util.SSLManager

- Direct Known Subclasses:
    JsseSSLManager

      public abstract class SSLManager
      extends Object

  The SSLManager handles the KeyStore information for JMeter. Basically, it handles all the logic for loading and initializing all the JSSE parameters and selecting the alias to authenticate against if it is available. SSLManager will try to automatically select the client certificate for you, but if it can't make a decision, it will pop open a dialog asking you for more information.

  TODO? - N.B. does not currently allow the selection of a client certificate.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `defaultpw` Have the password available
    `static String` | `JAVAX_NET_SSL_KEY_STORE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `SSLManager()` Protected Constructor to remove the possibility of directly instantiating this object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `configureKeystore(boolean preload, int startIndex, int endIndex, String clientCertAliasVarName)` Configure Keystore
    `void` | `destroyKeystore()` Destroy Keystore
    `static SSLManager` | `getInstance()` Static accessor for the SSLManager object.
    `protected JmeterKeyStore` | `getKeyStore()` Opens and initializes the KeyStore.
    `protected KeyStore` | `getTrustStore()` Opens and initializes the TrustStore.
    `static boolean` | `isSSLSupported()` Test whether SSL is supported or not.
    `static void` | `reset()` Resets the SSLManager so that we can create a new one with a new keystore
    `abstract void` | `setContext(HttpURLConnection conn)`
    `protected void` | `setProvider(Provider provider)` Default implementation of setting the Provider

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### JAVAX_NET_SSL_KEY_STORE

          public static final String JAVAX_NET_SSL_KEY_STORE

      See Also:
        Constant Field Values

    - #### defaultpw

          protected volatile String defaultpw

      Have the password available

  - ### Constructor Detail

    - #### SSLManager

          protected SSLManager()

      Protected Constructor to remove the possibility of directly instantiating this object. Create the SSLContext, and wrap all the X509KeyManagers with our X509KeyManager so that we can choose our alias.

  - ### Method Detail

    - #### reset

          public static void reset()

      Resets the SSLManager so that we can create a new one with a new keystore

    - #### setContext

          public abstract void setContext(HttpURLConnection conn)

    - #### setProvider

          protected void setProvider(Provider provider)

      Default implementation of setting the Provider
      Parameters:
        `provider` - the provider to use

    - #### getKeyStore

          protected JmeterKeyStore getKeyStore()

      Opens and initializes the KeyStore. If the password for the KeyStore is not set, this method will prompt you to enter it. Unfortunately, there is no PasswordEntryField available from JOptionPane.
      Returns:
        the configured `JmeterKeyStore`

    - #### getTrustStore

          protected KeyStore getTrustStore()

      Opens and initializes the TrustStore. There are 3 possibilities:
      - no truststore name provided, in which case the default Java truststore should be used
      - truststore name is provided, and loads OK
      - truststore name is provided, but is not found or does not load OK, in which case an empty truststore is created
      If the KeyStore object cannot be created, then this is currently treated the same as if no truststore name was provided.
      Returns:
        `null` when Java truststore should be used. Otherwise the truststore, which may be empty if the file could not be loaded.

    - #### getInstance

          public static SSLManager getInstance()

      Static accessor for the SSLManager object. The SSLManager is a singleton.
      Returns:
        the singleton `SSLManager`

    - #### isSSLSupported

          public static boolean isSSLSupported()

      Test whether SSL is supported or not.
      Returns:
        flag whether SSL is supported

    - #### configureKeystore

          public void configureKeystore(boolean preload,
                                        int startIndex,
                                        int endIndex,
                                        String clientCertAliasVarName)

      Configure Keystore
      Parameters:
        `preload` - flag whether the keystore should be opened within this method, or the opening should be delayed
        `startIndex` - first index to consider for a key
        `endIndex` - last index to consider for a key
        `clientCertAliasVarName` - name of the default key, if empty the first key will be used as default key

    - #### destroyKeystore

          public void destroyKeystore()

      Destroy Keystore

Copyright © 1998-2022 Apache Software Foundation. All Rights Reserved.