You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/10/10 11:56:09 UTC
svn commit: r1843428 - in /tomcat/trunk/java/org/apache/tomcat/util/net:
LocalStrings.properties SSLUtilBase.java jsse/JSSEUtil.java
openssl/OpenSSLUtil.java
Author: markt
Date: Wed Oct 10 11:56:09 2018
New Revision: 1843428
URL: http://svn.apache.org/viewvc?rev=1843428&view=rev
Log:
JSSE only supports TLS client authentication as part of the initial handshake. Log a warning if a JSSE connector is configured with TLS 1.3 and optional authentication.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java
tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java
tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLUtil.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties?rev=1843428&r1=1843427&r2=1843428&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties [UTF-8] (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties [UTF-8] Wed Oct 10 11:56:09 2018
@@ -129,6 +129,7 @@ channel.nio.ssl.foundHttp=Found an plain
jsse.invalid_truststore_password=The provided trust store password could not be used to unlock and/or validate the trust store. Retrying to access the trust store with a null password which will skip validation.
jsse.keystore_load_failed=Failed to load keystore type [{0}] with path [{1}] due to [{2}]
jsse.ssl3=SSLv3 has been explicitly enabled. This protocol is known to be insecure.
+jsse.tls13.auth=The JSSE TLS 1.3 implementation does not support authentication after the initial handshake and is therefore incompatible with optional client authentication
sniExtractor.clientHelloInvalid=The ClientHello message was not correctly formatted
sniExtractor.clientHelloTooBig=The ClientHello was not presented in a single TLS record so no SNI information could be extracted
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java?rev=1843428&r1=1843427&r2=1843428&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLUtilBase.java Wed Oct 10 11:56:09 2018
@@ -31,6 +31,7 @@ import java.util.Set;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.file.ConfigFileLoader;
+import org.apache.tomcat.util.net.SSLHostConfig.CertificateVerification;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -72,6 +73,13 @@ public abstract class SSLUtilBase implem
}
this.enabledProtocols = enabledProtocols.toArray(new String[enabledProtocols.size()]);
+ if (enabledProtocols.contains(Constants.SSL_PROTO_TLSv1_3) &&
+ (sslHostConfig.getCertificateVerification() == CertificateVerification.OPTIONAL ||
+ sslHostConfig.getCertificateVerification() == CertificateVerification.OPTIONAL) &&
+ !isTls13RenegAuthAvailable() && warnOnSkip) {
+ log.warn(sm.getString("jsse.tls13.auth"));
+ }
+
// Calculate the enabled ciphers
List<String> configuredCiphers = sslHostConfig.getJsseCipherNames();
Set<String> implementedCiphers = getImplementedCiphers();
@@ -209,4 +217,5 @@ public abstract class SSLUtilBase implem
protected abstract Set<String> getImplementedCiphers();
protected abstract Log getLog();
protected abstract boolean isTls13Available();
+ protected abstract boolean isTls13RenegAuthAvailable();
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java?rev=1843428&r1=1843427&r2=1843428&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEUtil.java Wed Oct 10 11:56:09 2018
@@ -177,6 +177,13 @@ public class JSSEUtil extends SSLUtilBas
@Override
+ protected boolean isTls13RenegAuthAvailable() {
+ // TLS 1.3 does not support authentication after the initial handshake
+ return false;
+ }
+
+
+ @Override
public SSLContext createSSLContext(List<String> negotiableProtocols) throws NoSuchAlgorithmException {
return new JSSESSLContext(sslHostConfig.getSslProtocol());
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLUtil.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLUtil.java?rev=1843428&r1=1843427&r2=1843428&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLUtil.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLUtil.java Wed Oct 10 11:56:09 2018
@@ -77,6 +77,13 @@ public class OpenSSLUtil extends SSLUtil
@Override
+ protected boolean isTls13RenegAuthAvailable() {
+ // OpenSSL does support authentication after the initial handshake
+ return true;
+ }
+
+
+ @Override
public SSLContext createSSLContext(List<String> negotiableProtocols) throws Exception {
return new OpenSSLContext(certificate, negotiableProtocols);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org