Interface AcmeProvider

All Known Implementing Classes:
AbstractAcmeProvider, GenericAcmeProvider

public interface AcmeProvider
An AcmeProvider provides methods to be used for communicating with the ACME server. Implementations handle individual features of each ACME server.

Provider implementations must be registered with Java's ServiceLoader.

  • Method Details

    • accepts

      boolean accepts(URI serverUri)
      Checks if this provider accepts the given server URI.
      Parameters:
      serverUri - Server URI to test
      Returns:
      true if this provider accepts the server URI, false otherwise
    • resolve

      URL resolve(URI serverUri)
      Resolves the server URI and returns the matching directory URL.
      Parameters:
      serverUri - Server URI
      Returns:
      Resolved directory URL
      Throws:
      IllegalArgumentException - if the server URI is not accepted
    • createHttpClient

      default HttpClient createHttpClient(NetworkSettings networkSettings)
      Creates an HttpClient instance configured with the given network settings.

      The default implementation creates a standard HttpClient with the network settings. Subclasses can override this method to create a customized HttpClient, for example to configure SSL context or other provider-specific requirements.

      Parameters:
      networkSettings - The network settings to use
      Returns:
      HttpClient instance
      Since:
      4.0.0
    • connect

      Connection connect(URI serverUri, NetworkSettings networkSettings, HttpClient httpClient)
      Creates a Connection for communication with the ACME server.
      Parameters:
      serverUri - Server URI
      networkSettings - NetworkSettings to be used for the connection
      httpClient - HttpClient to be used for HTTP requests
      Returns:
      Connection that was generated
      Since:
      4.0.0
    • directory

      @Nullable JSON directory(Session session, URI serverUri) throws AcmeException
      Returns the provider's directory. The structure must contain resource URLs, and may optionally contain metadata.

      The default implementation resolves the server URI and fetches the directory via HTTP request. Subclasses may override this method, e.g. if the directory is static.

      Parameters:
      session - Session to be used
      serverUri - Server URI
      Returns:
      Directory data, as JSON object, or null if the directory has not been changed since the last request.
      Throws:
      AcmeException
    • createChallenge

      @Nullable Challenge createChallenge(Login login, JSON data)
      Creates a Challenge instance for the given challenge data.
      Parameters:
      login - Login to bind the challenge to
      data - Challenge JSON data
      Returns:
      Challenge instance, or null if this provider is unable to generate a matching Challenge instance.
    • getProposedEabMacAlgorithm

      Returns a proposal for the EAB MAC algorithm to be used. Only set if the CA requires External Account Binding and the MAC algorithm cannot be correctly derived from the MAC key. Empty otherwise.
      Returns:
      Proposed MAC algorithm to be used for EAB, or empty for the default behavior.
      Since:
      3.5.0