private void validateTls(final CommandLine commandLine) {
    if (rpcHttpTlsKeyStoreFile == null) {
      throw new CommandLine.ParameterException(
          commandLine, "Keystore file is required when TLS is enabled for JSON-RPC HTTP endpoint");
    }

    if (rpcHttpTlsKeyStorePasswordFile == null) {
      throw new CommandLine.ParameterException(
          commandLine,
          "File containing password to unlock keystore is required when TLS is enabled for JSON-RPC HTTP endpoint");
    }

    if (isRpcHttpTlsClientAuthEnabled) {
      if (!isRpcHttpTlsCAClientsEnabled
          && rpcHttpTlsKnownClientsFile == null
          && rpcHttpTlsTruststoreFile == null) {
        throw new CommandLine.ParameterException(
            commandLine,
            "Configuration error: TLS client authentication is enabled, but none of the following options are provided: "
                + "1. Specify a known-clients file (--rpc-http-tls-known-clients-file) and/or  Enable CA clients (--rpc-http-tls-ca-clients-enabled). "
                + "2. Specify a truststore file and its password file (--rpc-http-tls-truststore-file and --rpc-http-tls-truststore-password-file). "
                + "Only one of these options must be configured");
      }

      if (rpcHttpTlsTruststoreFile != null && rpcHttpTlsTruststorePasswordFile == null) {
        throw new CommandLine.ParameterException(
            commandLine,
            "Configuration error: A truststore file is specified for JSON RPC HTTP endpoint, but the corresponding truststore password file (--rpc-http-tls-truststore-password-file) is missing");
      }

      if ((isRpcHttpTlsCAClientsEnabled || rpcHttpTlsKnownClientsFile != null)
          && rpcHttpTlsTruststoreFile != null) {
        throw new CommandLine.ParameterException(
            commandLine,
            "Configuration error: Truststore file (--rpc-http-tls-truststore-file) cannot be used together with CA clients (--rpc-http-tls-ca-clients-enabled) or a known-clients (--rpc-http-tls-known-clients-file) option. "
                + "These options are mutually exclusive. Choose either truststore-based authentication or known-clients/CA clients configuration.");
      }
    }

    rpcHttpTlsProtocols.retainAll(getJDKEnabledProtocols());
    if (rpcHttpTlsProtocols.isEmpty()) {
      throw new CommandLine.ParameterException(
          commandLine,
          "No valid TLS protocols specified (the following protocols are enabled: "
              + getJDKEnabledProtocols()
              + ")");
    }

    for (final String cipherSuite : rpcHttpTlsCipherSuites) {
      if (!getJDKEnabledCipherSuites().contains(cipherSuite)) {
        throw new CommandLine.ParameterException(
            commandLine, "Invalid TLS cipher suite specified " + cipherSuite);
      }
    }
  }
Checks dependencies between options.

@param logger Logger instance
@param commandLine CommandLine instance
app/src/main/java/org/hyperledger/besu/cli/options/JsonRpcHttpOptions.java