[ https://issues.apache.org/jira/browse/GEODE-9991?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17528322#comment-17528322 ]
Jacob Barrett commented on GEODE-9991: -------------------------------------- h1. Geode Upgrade Methods for 1.15.0 h1. Preface Migration steps are only required if ssl-endpoint-identification-enabled=true. All other upgrades are allowed without migration steps. Migration is required due to a bug introduced that causes Geode to ignore the configured ssl-protocols and fall back to the JVM defaults, which can result in the client side being configured with SSLv2Hello and the server to deny it. With this mismatch in protocol configuration the member can fail to establish P2P connections to other members of the cluster. Two new properties are introduced in this version to configure the server and client side of the P2P connections separately, ssl-server-protocols and ssl-client-protocols respectively. h1. Upgrading Geode You can upgrade Geode to 1.15.0, with or without upgrading the JVM, under these conditions. h2. From 1.14.0-1.14.4, 1.13.0-1.13.8, 1.12.1-1.12.9 If ssl-protocols is explicitly set but does not include SSLv2Hello, for example “TLSv1.2,TLSv1.1”, then goto [Upgrade With New Properties|https://docs.google.com/document/d/1YKDRYlZV8vfGyJCS2WlLhUAegUngxHV03HsIyhNLwvg/edit#heading=h.modyy795d4pz]. If ssl-protocols explicitly includes SSLv2Hello, for example “TLSv1.2,SSLv2Hello”, then goto [Upgrade Without Migration|https://docs.google.com/document/d/1YKDRYlZV8vfGyJCS2WlLhUAegUngxHV03HsIyhNLwvg/edit#heading=h.5b7id4y6hflk]. If ssl-protocols is unset or set to “any”, then goto [Upgrade Without Migration|https://docs.google.com/document/d/1YKDRYlZV8vfGyJCS2WlLhUAegUngxHV03HsIyhNLwvg/edit#heading=h.5b7id4y6hflk]. h2. From 1.12.0, 1.11.0, 1.10.0, 1.9.2, 1.8.0 No special considerations required, goto [Upgrade Without Migration|https://docs.google.com/document/d/1YKDRYlZV8vfGyJCS2WlLhUAegUngxHV03HsIyhNLwvg/edit#heading=h.5b7id4y6hflk]. h2. From Other Versions These are untested and should not be attempted in production. h1. Upgrading JVM Only If you are upgrading the JVM only, from a Java 1.8 version prior to TLS 1.3 support you may also need to upgrade Geode. TLS 1.3 was backported to different versions of Java 1.8 by various vendors. OpenJDK backport version is 1.8.0_271. Oracle JDK backport version is 1.8.0_261. For other vendors please refer to their documentation. h2. From 1.14.0-1.14.4, 1.13.0-1.13.8, 1.12.1-1.12.9 You cannot upgrade the JVM without upgrading Geode to 1.15.0. This can be done in a single restart. Goto [Upgrade With New Properties|https://docs.google.com/document/d/1YKDRYlZV8vfGyJCS2WlLhUAegUngxHV03HsIyhNLwvg/edit#heading=h.modyy795d4pz]. h2. For 1.12.0, 1.12.0, 1.11.0, 1.10.0, 1.9.2, 1.8.0 No special considerations required, goto [Upgrade Without Migration|https://docs.google.com/document/d/1YKDRYlZV8vfGyJCS2WlLhUAegUngxHV03HsIyhNLwvg/edit#heading=h.5b7id4y6hflk]. h1. Upgrade Without Migration You have nothing to fear, go ahead and upgrade like normal. h1. Upgrade With New Properties Use the new ssl-client-protocols and ssl-server-protocols properties to configure the client and server side of the SSL connection independently. You will need to add SSLv2Hello to the ssl-server-protocols to account for the misconfiguration of the older members in the cluster. # Shutdown member. # Install new Geode. # Optionally install new Java JDK. # Eliminate security property ssl-protocols from the server’s configuration. # Add security property ssl-client-protocols with the explicit value(s) previously defined in ssl-protocols. For example, if ssl-protocols=TLSv1.2 then ssl-client-protocols=TLSv1.2. # Add security property ssl-server-protocols with the explicit value(s) previously defined in ssl-protocols plus “SSLv2Hello”. For example, if ssl-protocols=TLSv1.2 then ssl-server-protocols=TLSv1.2,SSLv2Hello. # Start member. # Verify successful cluster join. # Repeat from step 1 for the next member. Optionally, after the migration is complete you may restore your original ssl-protocols property and restart all your members to eliminate the SSLv2Hello protocol support from the server side sockets. > SSL protocol and cipher preferences are ignored when endpoint verification is > enabled. > -------------------------------------------------------------------------------------- > > Key: GEODE-9991 > URL: https://issues.apache.org/jira/browse/GEODE-9991 > Project: Geode > Issue Type: Bug > Components: core, security > Affects Versions: 1.12.8, 1.12.9, 1.13.7, 1.13.8, 1.14.3, 1.14.4, 1.15.0 > Reporter: Jacob Barrett > Assignee: Jacob Barrett > Priority: Major > Labels: blocks-1.15.0, pull-request-available, ssl > Fix For: 1.15.0 > > > When SSL endpoint verification is enabled the configuration for protocols and > ciphers reverts to the {{SSLContext}}'s client mode defaults. This can result > in difficulty upgrade the JDK when the newer JDK may use different defaults > for client and server mode SSL. > Oracle JDK 1.8.0_u261 and OpenJDK 1.8.0_u272 replaced the SSL implementation > with a back port from Java 11. This changed the default server protocols from > {{[SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2]}} to {{[TLSv1.3,TLSv1.2,SSLv2Hello]}} > and client to {{[TLSv1.3,TLSv1.2]}}. With this bug the the server protocols > get reset to the client protocols dropping support for the {{SSLv2Hello}} > protocol, which is the first priority protocol by default in the old JDK. > The result is a failure to handshake with the following exception: > {{javax.net.ssl.SSLHandshakeException: SSLv2Hello is not enabled}} > To reproduce you need to have endpoint validation enabled on your SSL > configuration. Set your protocols to `any`. Start 1st locator with JDK older > than 1.8.0_u261. Start 2nd locator with JDK at least as new as JDK > 1.8.0_u272. -- This message was sent by Atlassian Jira (v8.20.7#820007)