[[auth-reference]] == SSL and Authentication You can configure the client to use SSL for connecting to your elasticsearch cluster, including certificate verification and http auth. === Basic Auth Basic authentication credentials can be configured on a per-host basis using URL notation, or at the `auth:` property of a host config object. .Credentials directly in the host url: [source,js] ----- var client = new elasticsearch.Client({ host: 'https://user:password@my-site.com:9200' }) ----- .Credentials as a property of the host config: [source,js] ----- var client = new elasticsearch.Client({ host: [ { host: 'es1.internal.org', auth: 'user:password', protocol: 'https', port: 9200 } ] }); ----- === HTTPS/SSL Without any additional configuration you can specify `https://` host urls, but the certificates used to sign these requests will not verified (`rejectUnauthorized: false`). To turn on certificate verification you must specify an `ssl:` object either in the top level config or in each host config object and set `rejectUnauthorized: true`. The ssl config object can contain many of the same configuration options that http://nodejs.org/docs/latest/api/tls.html#tls_tls_connect_port_host_options_callback[`tls.connect()`] accepts. For convenience these options are also listed in the <> reference. .Specify a certificate authority that should be used to verify server certifcates on all nodes: [source,js] ----- var client = new elasticsearch.Client({ hosts: [ 'https://box1.internal.org:9200', 'https://box2.internal.org:9200', 'https://box3.internal.org:9200' ], ssl: { ca: fs.readFileSync('./cacert.pem'), rejectUnauthorized: true } }); -----