public SslContextFactory.Server createSslContextFactory() {
        SslContextFactory.Server ssl = new SslContextFactory.Server();
        if (sslContext != null) ssl.setSslContext(sslContext);
        if (keystore != null) ssl.setKeyStore(keystore);
        if (keystorePassword != null) ssl.setKeyStorePassword(new String(keystorePassword));
        if (truststore != null) ssl.setTrustStore(truststore);
        if (truststorePassword != null) ssl.setTrustStorePassword(new String(truststorePassword));
        switch (clientAuth) {
            case DISABLED:
                ssl.setWantClientAuth(false);
                ssl.setNeedClientAuth(false);
                break;
            case NEED:
                ssl.setWantClientAuth(false);
                ssl.setNeedClientAuth(true);
                break;
            case WANT:
                ssl.setWantClientAuth(true);
                ssl.setNeedClientAuth(false);
                break;
            default:
                throw new IllegalArgumentException(clientAuth.name());
        }
        if (!cipherSuites.isEmpty()) SslContextFactoryUtils.setEnabledCipherSuites(ssl, sslContext, cipherSuites);
        if (!protocolVersions.isEmpty()) SslContextFactoryUtils.setEnabledProtocols(ssl, sslContext, protocolVersions);
        return ssl;
    }
Default implementation of {@link SslProvider} backed by {@link SslContextFactory.Server}

@author bjorncs
container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/DefaultConnectorSsl.java