Code review comment: This should set to 'TLS'. It's effectively setting max TLS version, disabling TLSv1.3 even when it's listed in `enableProtocols`. See table in https://bugs.openjdk.java.net/browse/JDK-8202625.

Code under review:
private String createTlsQuorumConfig(ZookeeperServerConfig config) {
        StringBuilder sb = new StringBuilder();

        
        sb.append("ssl.quorum.hostnameVerification=false\n");
        sb.append("ssl.quorum.clientAuth=NEED\n");
        sb.append("ssl.quorum.ciphersuites=").append(String.join(",", new TreeSet<>(TlsContext.ALLOWED_CIPHER_SUITES))).append("\n");
        sb.append("ssl.quorum.enabledProtocols=").append(String.join(",", new TreeSet<>(TlsContext.ALLOWED_PROTOCOLS))).append("\n");
        sb.append("ssl.quorum.protocol=TLSv1.2\n");

        String tlsSetting = config.tlsForQuorumCommunication().name();
        switch (tlsSetting) {
            case "OFF":
                sb.append("sslQuorum=false\n");
                sb.append("portUnification=false\n");
                break;
            case "PORT_UNIFICATION":
                sb.append("sslQuorum=false\n");
                sb.append("portUnification=true\n");
                break;
            case "TLS_WITH_PORT_UNIFICATION":
                sb.append("sslQuorum=true\n");
                sb.append("portUnification=true\n");
                break;
            case "TLS_ONLY":
                sb.append("sslQuorum=true\n");
                sb.append("portUnification=false\n");
                break;
            default: throw new IllegalArgumentException("Unknown value of config setting tlsForQuorumCommunication: " + tlsSetting);
        }

        return sb.toString();
    }

Line commented on: sb.append("ssl.quorum.protocol=TLSv1.2\n");

Revised code:
private String createTlsQuorumConfig(ZookeeperServerConfig config) {
        StringBuilder sb = new StringBuilder();

        
        sb.append("ssl.quorum.hostnameVerification=false\n");
        sb.append("ssl.quorum.clientAuth=NEED\n");
        sb.append("ssl.quorum.ciphersuites=").append(String.join(",", new TreeSet<>(TlsContext.ALLOWED_CIPHER_SUITES))).append("\n");
        sb.append("ssl.quorum.enabledProtocols=").append(String.join(",", new TreeSet<>(TlsContext.ALLOWED_PROTOCOLS))).append("\n");
        sb.append("ssl.quorum.protocol=TLS\n");

        String tlsSetting = config.tlsForQuorumCommunication().name();
        switch (tlsSetting) {
            case "OFF":
                sb.append("sslQuorum=false\n");
                sb.append("portUnification=false\n");
                break;
            case "PORT_UNIFICATION":
                sb.append("sslQuorum=false\n");
                sb.append("portUnification=true\n");
                break;
            case "TLS_WITH_PORT_UNIFICATION":
                sb.append("sslQuorum=true\n");
                sb.append("portUnification=true\n");
                break;
            case "TLS_ONLY":
                sb.append("sslQuorum=true\n");
                sb.append("portUnification=false\n");
                break;
            default: throw new IllegalArgumentException("Unknown value of config setting tlsForQuorumCommunication: " + tlsSetting);
        }

        return sb.toString();
    }