LinuxCommandLibrary

elasticsearch-certutil

Generate Elasticsearch security certificates

TLDR

Generate a new Certificate Authority (CA) with default options

$ elasticsearch-certutil ca
copy

Generate a new certificate using the built-in CA
$ elasticsearch-certutil cert
copy

Generate certificates non-interactively and output PEM files
$ elasticsearch-certutil cert [[-s|--silent]] --pem
copy

Generate HTTP certificates with the built-in CA
$ elasticsearch-certutil http
copy

Generate transport certificates non-interactively
$ elasticsearch-certutil transport [[-s|--silent]]
copy

Generate a certificate signing request (CSR)
$ elasticsearch-certutil csr
copy

Generate encrypted keystore passwords
$ elasticsearch-certutil password
copy

Generate a keystore password with a specified value
$ elasticsearch-certutil password --pass [password]
copy

SYNOPSIS

elasticsearch-certutil ca|cert|http [--option <value>]...

PARAMETERS

--ca <path>
    Path to CA keystore (for cert and http).

--ca-pass <password>
    Password for CA keystore.

--ca-dn <DN>
    Distinguished Name for CA (default: CN=Elasticsearch root CA).

--days <days>
    Certificate validity in days (default: 1095).

--dns <hostname>
    DNS name in SAN (repeatable).

--ip <ip>
    IP address in SAN (repeatable).

--name <name>
    Node name for certificate (default: node).

--out, --file <path>
    Output path (default: elastic-stack-ca.p12 or elastic-certificates.p12).

--pass <password>
    Password for output keystore (default: empty).

--pem
    Output PEM files instead of PKCS#12.

--in <path>
    File with CSRs to sign (cert only).

--multiple
    Generate certs for all hosts in --in (cert only).

--keep-ca-key
    Retain CA private key after use (cert only).

--silent
    Suppress non-error output.

--verbose
    Enable detailed output.

--help
    Show help.

--version
    Show version.

DESCRIPTION

elasticsearch-certutil is a command-line tool included with Elasticsearch distributions to generate self-signed X.509 certificates, Certificate Authorities (CAs), and Certificate Signing Requests (CSRs) for securing cluster communications. It supports TLS encryption for node-to-node transport layer and HTTP REST API endpoints.

Key use cases include creating a root CA with ca subcommand, signing node certificates with cert, and generating HTTP-specific certificates with http. Certificates are output in PKCS#12 (.p12) format by default for easy import into Elasticsearch keystores, or PEM format for broader compatibility.

This utility simplifies security setup without external tools like OpenSSL, automating multi-node certificate generation and handling Distinguished Names (DNs), Subject Alternative Names (SANs) for DNS/IP, and password protection. It's crucial for production clusters enabling xpack.security features, ensuring encrypted data in transit and optional client authentication.

CAVEATS

Requires Java runtime; run as elasticsearch user; generated certs are self-signed (use external CA for prod); PKCS#12 passwords empty by default—set explicitly; not for rolling cluster upgrades without planning.

SUBCOMMANDS

ca: Create root CA.
cert: Sign node CSRs/certificates.
http: Generate HTTP CA + certs.

EXAMPLES

CA: elasticsearch-certutil ca --out elastic-stack-ca.p12
Node certs: elasticsearch-certutil cert --ca elastic-stack-ca.p12 --out certs.p12
HTTP: elasticsearch-certutil http --out http.p12

HISTORY

Introduced in Elasticsearch 6.8 (2019) with free basic security license; evolved in 7.x+ for HTTP certs and PEM support; integral to Elastic Stack 8.x security bootstrapping.

SEE ALSO

openssl(1), keytool(1)

Copied to clipboard