Skip to content

Commit 007c915

Browse files
authored
Merge pull request #224 from debjanibnrj/removeopenssl
Removed OpenSSL for 7.4
2 parents f14e119 + 7ae2577 commit 007c915

File tree

2 files changed

+38
-30
lines changed

2 files changed

+38
-30
lines changed

src/main/java/com/amazon/opendistroforelasticsearch/security/ssl/DefaultOpenDistroSecurityKeyStore.java

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
/*
22
* Copyright 2015-2017 floragunn GmbH
3-
*
3+
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
66
* You may obtain a copy of the License at
7-
*
7+
*
88
* http://www.apache.org/licenses/LICENSE-2.0
99
*
1010
* Unless required by applicable law or agreed to in writing, software
1111
* distributed under the License is distributed on an "AS IS" BASIS,
1212
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
15-
*
15+
*
1616
*/
1717

1818
package com.amazon.opendistroforelasticsearch.security.ssl;
@@ -54,8 +54,10 @@
5454

5555
import org.apache.logging.log4j.LogManager;
5656
import org.apache.logging.log4j.Logger;
57+
5758
import org.elasticsearch.ElasticsearchException;
5859
import org.elasticsearch.ElasticsearchSecurityException;
60+
import org.apache.lucene.util.Constants;
5961
import org.elasticsearch.SpecialPermission;
6062
import org.elasticsearch.common.settings.Settings;
6163
import org.elasticsearch.env.Environment;
@@ -88,17 +90,17 @@ private void printJCEWarnings() {
8890
public final SslProvider sslTransportClientProvider;
8991
private final boolean httpSSLEnabled;
9092
private final boolean transportSSLEnabled;
91-
93+
9294
private List<String> enabledHttpCiphersJDKProvider;
9395
private List<String> enabledHttpCiphersOpenSSLProvider;
9496
private List<String> enabledTransportCiphersJDKProvider;
9597
private List<String> enabledTransportCiphersOpenSSLProvider;
96-
98+
9799
private List<String> enabledHttpProtocolsJDKProvider;
98100
private List<String> enabledHttpProtocolsOpenSSLProvider;
99101
private List<String> enabledTransportProtocolsJDKProvider;
100102
private List<String> enabledTransportProtocolsOpenSSLProvider;
101-
103+
102104
private SslContext httpSslContext;
103105
private SslContext transportServerSslContext;
104106
private SslContext transportClientSslContext;
@@ -124,7 +126,12 @@ public DefaultOpenDistroSecurityKeyStore(final Settings settings, final Path con
124126
.getAsBoolean(SSLConfigConstants.OPENDISTRO_SECURITY_SSL_TRANSPORT_ENABLE_OPENSSL_IF_AVAILABLE, true);
125127

126128
if(!OpenDistroSecuritySSLPlugin.OPENSSL_SUPPORTED && OpenSsl.isAvailable() && (settings.getAsBoolean(SSLConfigConstants.OPENDISTRO_SECURITY_SSL_HTTP_ENABLE_OPENSSL_IF_AVAILABLE, true) || settings.getAsBoolean(SSLConfigConstants.OPENDISTRO_SECURITY_SSL_TRANSPORT_ENABLE_OPENSSL_IF_AVAILABLE, true) )) {
127-
String text = "Support for OpenSSL with Java 12+ has been removed from Open Distro Security since Elasticsearch 7.4.0. Using JDK SSL instead.\n";
129+
String text = "Support for OpenSSL has been removed from Open Distro Security since Elasticsearch 7.4.0. Use JDK SSL instead\n";
130+
if(Constants.JRE_IS_MINIMUM_JAVA11) {
131+
text += "Since you are running Java "+Constants.JAVA_VERSION+" you should not experience any performance impact but maybe not all your ciphers are supported. If you experience problems upgrade to Java 11+";
132+
} else {
133+
text += "You are running a very old version of Java ("+Constants.JAVA_VERSION+") so you may experience a performance impact and it is strongly advised to update to Java 11+";
134+
}
128135
System.out.println(text);
129136
log.warn(text);
130137
}
@@ -171,8 +178,8 @@ public DefaultOpenDistroSecurityKeyStore(final Settings settings, final Path con
171178
Arrays.toString(getEnabledSSLProtocols(sslTransportServerProvider, false)));
172179
log.info("Enabled TLS protocols for HTTP layer : {}",
173180
Arrays.toString(getEnabledSSLProtocols(sslHTTPProvider, true)));
174-
175-
181+
182+
176183
log.debug("sslTransportClientProvider:{} with protocols {}", sslTransportClientProvider,
177184
getEnabledSSLProtocols(sslTransportClientProvider, false));
178185
log.debug("sslTransportServerProvider:{} with protocols {}", sslTransportServerProvider,
@@ -191,7 +198,7 @@ public DefaultOpenDistroSecurityKeyStore(final Settings settings, final Path con
191198
if (transportSSLEnabled && getEnabledSSLCiphers(sslTransportServerProvider, false).isEmpty()) {
192199
throw new ElasticsearchSecurityException("no ssl protocols for transport protocol");
193200
}
194-
201+
195202
if (transportSSLEnabled && getEnabledSSLCiphers(sslTransportClientProvider, false).isEmpty()) {
196203
throw new ElasticsearchSecurityException("no ssl protocols for transport protocol");
197204
}
@@ -248,11 +255,11 @@ private void initSSLConfig() {
248255
final String keystorePassword = settings.get(
249256
SSLConfigConstants.OPENDISTRO_SECURITY_SSL_TRANSPORT_KEYSTORE_PASSWORD,
250257
SSLConfigConstants.DEFAULT_STORE_PASSWORD);
251-
258+
252259
final String keyPassword = settings.get(
253260
SSLConfigConstants.OPENDISTRO_SECURITY_SSL_TRANSPORT_KEYSTORE_KEYPASSWORD,
254261
keystorePassword);
255-
262+
256263
final String keystoreAlias = settings.get(SSLConfigConstants.OPENDISTRO_SECURITY_SSL_TRANSPORT_KEYSTORE_ALIAS,
257264
null);
258265

@@ -296,7 +303,7 @@ private void initSSLConfig() {
296303
/*
297304
* for (int i = 0; i < transportKeystoreCert.length; i++) { X509Certificate
298305
* x509Certificate = transportKeystoreCert[i];
299-
*
306+
*
300307
* if(x509Certificate != null) {
301308
* log.info("Transport keystore subject DN no. {} {}",i,x509Certificate.
302309
* getSubjectX500Principal()); } }
@@ -383,12 +390,12 @@ trustedTransportCertificates, getEnabledSSLCiphers(sslTransportClientProvider, f
383390
DEFAULT_STORE_TYPE);
384391
final String keystorePassword = settings.get(SSLConfigConstants.OPENDISTRO_SECURITY_SSL_HTTP_KEYSTORE_PASSWORD,
385392
SSLConfigConstants.DEFAULT_STORE_PASSWORD);
386-
393+
387394
final String keyPassword = settings.get(
388395
SSLConfigConstants.OPENDISTRO_SECURITY_SSL_HTTP_KEYSTORE_KEYPASSWORD,
389396
keystorePassword);
390-
391-
397+
398+
392399
final String keystoreAlias = settings.get(SSLConfigConstants.OPENDISTRO_SECURITY_SSL_HTTP_KEYSTORE_ALIAS, null);
393400

394401
log.info("HTTPS client auth mode {}", httpClientAuthMode);
@@ -432,7 +439,7 @@ trustedTransportCertificates, getEnabledSSLCiphers(sslTransportClientProvider, f
432439
/*
433440
* for (int i = 0; i < httpKeystoreCert.length; i++) { X509Certificate
434441
* x509Certificate = httpKeystoreCert[i];
435-
*
442+
*
436443
* if(x509Certificate != null) {
437444
* log.info("HTTP keystore subject DN no. {} {}",i,x509Certificate.
438445
* getSubjectX500Principal()); } }
@@ -600,7 +607,7 @@ private List<String> getEnabledSSLCiphers(final SslProvider provider, boolean ht
600607
}
601608

602609
}
603-
610+
604611
private String[] getEnabledSSLProtocols(final SslProvider provider, boolean http) {
605612
if (provider == null) {
606613
return new String[0];
@@ -629,8 +636,8 @@ private void initEnabledSSLCiphers() {
629636
openSSLSecureHttpCiphers.add(secure);
630637
}
631638
}
632-
633-
639+
640+
634641
log.debug("OPENSSL "+OpenSsl.versionString()+" supports the following ciphers (java-style) {}", OpenSsl.availableJavaCipherSuites());
635642
log.debug("OPENSSL "+OpenSsl.versionString()+" supports the following ciphers (openssl-style) {}", OpenSsl.availableOpenSslCipherSuites());
636643

@@ -653,15 +660,15 @@ private void initEnabledSSLCiphers() {
653660
} else {
654661
enabledTransportCiphersOpenSSLProvider = Collections.emptyList();
655662
}
656-
663+
657664
if(OpenDistroSecuritySSLPlugin.OPENSSL_SUPPORTED && OpenSsl.isAvailable() && OpenSsl.version() > 0x10101009L) {
658665
enabledHttpProtocolsOpenSSLProvider = new ArrayList(Arrays.asList("TLSv1.3","TLSv1.2","TLSv1.1","TLSv1"));
659666
enabledHttpProtocolsOpenSSLProvider.retainAll(secureHttpSSLProtocols);
660667
enabledTransportProtocolsOpenSSLProvider = new ArrayList(Arrays.asList("TLSv1.3","TLSv1.2","TLSv1.1"));
661668
enabledTransportProtocolsOpenSSLProvider.retainAll(secureTransportSSLProtocols);
662-
669+
663670
log.info("OpenSSL supports TLSv1.3");
664-
671+
665672
} else if(OpenDistroSecuritySSLPlugin.OPENSSL_SUPPORTED && OpenSsl.isAvailable()){
666673
enabledHttpProtocolsOpenSSLProvider = new ArrayList(Arrays.asList("TLSv1.2","TLSv1.1","TLSv1"));
667674
enabledHttpProtocolsOpenSSLProvider.retainAll(secureHttpSSLProtocols);
@@ -685,11 +692,11 @@ private void initEnabledSSLCiphers() {
685692
jdkSupportedProtocols);
686693
log.debug("JVM supports the following {} ciphers {}", jdkSupportedCiphers.size(),
687694
jdkSupportedCiphers);
688-
695+
689696
if(jdkSupportedProtocols.contains("TLSv1.3")) {
690697
log.info("JVM supports TLSv1.3");
691698
}
692-
699+
693700
} catch (final Throwable e) {
694701
log.error("Unable to determine supported ciphers due to " + e, e);
695702
} finally {
@@ -706,16 +713,16 @@ private void initEnabledSSLCiphers() {
706713
if(jdkSupportedCiphers == null || jdkSupportedCiphers.isEmpty() || jdkSupportedProtocols == null || jdkSupportedProtocols.isEmpty()) {
707714
throw new ElasticsearchException("Unable to determine supported ciphers or protocols");
708715
}
709-
716+
710717
enabledHttpCiphersJDKProvider = new ArrayList<String>(jdkSupportedCiphers);
711718
enabledHttpCiphersJDKProvider.retainAll(secureHttpSSLCiphers);
712-
719+
713720
enabledTransportCiphersJDKProvider = new ArrayList<String>(jdkSupportedCiphers);
714721
enabledTransportCiphersJDKProvider.retainAll(secureTransportSSLCiphers);
715-
722+
716723
enabledHttpProtocolsJDKProvider = new ArrayList<String>(jdkSupportedProtocols);
717724
enabledHttpProtocolsJDKProvider.retainAll(secureHttpSSLProtocols);
718-
725+
719726
enabledTransportProtocolsJDKProvider = new ArrayList<String>(jdkSupportedProtocols);
720727
enabledTransportProtocolsJDKProvider.retainAll(secureTransportSSLProtocols);
721728
}

src/main/java/com/amazon/opendistroforelasticsearch/security/ssl/OpenDistroSecuritySSLPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@
8282
//For ES5 this class has only effect when SSL only plugin is installed
8383
public class OpenDistroSecuritySSLPlugin extends Plugin implements ActionPlugin, NetworkPlugin {
8484

85-
public static final boolean OPENSSL_SUPPORTED = PlatformDependent.javaVersion() < 12;
85+
// Not supporting OPENSSL for ES7.4+
86+
public static final boolean OPENSSL_SUPPORTED = false;
8687
protected final Logger log = LogManager.getLogger(this.getClass());
8788
protected static final String CLIENT_TYPE = "client.type";
8889
protected final boolean client;

0 commit comments

Comments
 (0)