We generate certificates that are intended to be used for server authentication in a couple of places:

- `bin/elasticsearch-certutil http` command  ( See `CertGenUtils.generateSignedCertificate` in `HttpCertificateCommand` )
- TLS auto-configuraion for node startup ( see [`AutoConfigureNode`](https://github.com/elastic/elasticsearch/blob/814f7f9f52cb8c05db6465b9bfc818ea5d76c575/x-pack/plugin/security/cli/src/main/java/org/elasticsearch/xpack/security/cli/AutoConfigureNode.java#L454) )

In these cases we know that the certificate is meant to be used for server authentication, so we can set Extended Key Usage extension to `1.3.6.1.5.5.7.3.1`
x-pack/plugin/security/cli/src/test/java/org/elasticsearch/xpack/security/cli/HttpCertificateCommandTests.java
assertThat(copy.apply("#if blank\ntrue\n#else\nfalse\n#endif\n", Map.of("blank", "")), is("false\n"));
        assertThat(copy.apply("#if var\n--> ${var} <--\n#else\n(${var})\n#endif\n", Map.of("var", "foo")), is("--> foo <--\n"));
    }
    private Path getZipRoot(Path outFile) throws IOException, URISyntaxException {
        assertThat(outFile, isRegularFile());
        FileSystem fileSystem = FileSystems.newFileSystem(new URI("jar:" + outFile.toUri()), Collections.emptyMap());
        return fileSystem.getPath("/");
    }
    private List<String> randomIpAddresses() throws UnknownHostException {
        final int ipCount = randomIntBetween(0, 3);
        final List<String> ipAddresses = new ArrayList<>(ipCount);
        for (int i = 0; i < ipCount; i++) {
            String ip = randomIpAddress();
            ipAddresses.add(ip);
        }
        return ipAddresses;
    }
    private String randomIpAddress() throws UnknownHostException {
        return formatIpAddress(randomByteArrayOfLength(4));
    }
    private String formatIpAddress(byte[] addr) throws UnknownHostException {
        return NetworkAddress.format(InetAddress.getByAddress(addr));
    }
    private List<String> randomHostNames() {
        final int hostCount = randomIntBetween(1, 5);
        final List<String> hostNames = new ArrayList<>(hostCount);
        for (int i = 0; i < hostCount; i++) {
            String host = String.join(".", randomArray(1, 4, String[]::new, () -> randomAlphaOfLengthBetween(3, 8)));
            if (i > 0 && randomBoolean()) {
                host = "*." + host;