Lev C created DRILL-8447:
----------------------------

             Summary: Jetty TLS support broken for server certificate with 
multiple SANs
                 Key: DRILL-8447
                 URL: https://issues.apache.org/jira/browse/DRILL-8447
             Project: Apache Drill
          Issue Type: Bug
          Components:  Server, Web Server
    Affects Versions: 1.21.1
            Reporter: Lev C


The update of Jetty dependency to version 9.4 (DRILL-7135) has led to Drill no 
longer supporting a TLS server certificate with multiple Subject Alternate Name 
(SAN) values.

If you try to use a keystore containing a single cert with multiple SANs, you 
get the following error on startup of the Drillbit:

 
{code:java}
[main] ERROR o.apache.drill.exec.server.Drillbit - Failure during initial 
startup of Drillbit.
java.lang.illegalStateException: KeyStores with multiple certificates are not 
supported on the base class org.eclipse.jetty.util.ssl.SslContextFactory. (Use 
org.eclipse.jetty.util.ssl.SslContextFactory$Server or 
org.eclipse.jetty.util.SslContextFactory$Client instead){code}
It appears that Jetty version 9.4 has deprecated the 
org.eclipse.jetty.util.ssl.SslContextFactory class, and Drill should now use 
the org.eclipse.jetty.util.ssl.SslContextFactory.Server class instead.

 

I was unable to find a Drill configuration file to change which class is used 
(eg an instance of jetty-ssl.xml), and it looks like the specific 
SslContextFactory class is hardcoded in 
org.apache.drill.exec.server.rest.ssl.SslContextFactoryConfigurator:
{code:java}
public SslContextFactory configureNewSslContextFactory() throws Exception {    
  SSLConfig sslConf = new SSLConfigBuilder()
        .config(config)
        .mode(SSLConfig.Mode.SERVER)
        .initializeSSLContext(false)
        .validateKeyStore(true)
        .build();    
  final SslContextFactory sslContextFactory = new SslContextFactory();
  if (sslConf.isSslValid()) {
    useOptionsConfiguredByUser(sslContextFactory, sslConf);
  } else {
    useAutoGeneratedSelfSignedCertificate(sslContextFactory);
  }
  return sslContextFactory;  
} {code}
Relevant links for other products affected by the same issue:

https://issues.apache.org/jira/browse/NIFI-7730 

[https://opennms.discourse.group/t/jetty-with-ssl-throws-error-with-keystores-with-multiple-certificates-are-not-supported/1489]

[https://community.microfocus.com/adtd/sws-qc/f/itrc-895/513861/java-lang-illegalstateexception-keystores-with-multiple-certificates-are-not-supported-on-the-base-class-org-eclipse-jetty-util-ssl-sslcontextfactory]
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to