To be Reviewed By: January 13, 2020

Authors: Mario Ivanac

Status: Draft | Discussion | Active | Dropped | Superseded

Superseded by: N/A

Related: N/A

Problem

We would like to add generation of Server Name Indication (SNI)  parameter to Client Hello message in geode.

Anti-Goals


Solution


              Idea is to implement generic solution for modification of SSL parameters. If the user wishes to manipulate SSL Parameters they would need to define class which implements new interface and provide ServiceLoader pattern as a new configuration parameter.


              Configuration:

              We will introduce new configuration parameter:

              - ssl-parameter-extension: User defined fully qualified class name implementing SSLParameterExtension interface for SSL parameter extensions. Defaults to "".


              User class must implement SSLParameterExtension interface.


interface SSLParameterExtension
public interface SSLParameterExtension {
  default void init(Properties properties) {}

  default SSLParameters modifySSLClientSocketParameters(SSLParameters parameters) {
    return parameters;
  }

  default SSLParameters modifySSLServerSocketParameters(SSLParameters parameters) {
    return parameters;
  }
}


              For more details see: PR 4505

Changes and Additions to Public Interfaces

If you are proposing to add or modify public interfaces, those changes should be outlined here in detail.

Performance Impact

None

Backwards Compatibility and Upgrade Path

No upgrade or backwards compatibility issues.

Prior Art

What would be the alternatives to the proposed solution? What would happen if we don’t solve the problem? Why should this proposal be preferred?

FAQ

Answers to questions you’ve commonly been asked after requesting comments for this proposal.

Errata

Since this RFC was approved, modification of argument for init() method was proposed, since it  takes a DistributionConfig as an argument, but that is an internal class.

New proposal is to use Properties as argument for init() method:


default void init(Properties properties) {}



  • No labels