---
layout: docs
page_title: Inline certificate configuration entry reference
description: >-
  Learn how to configure an inline certificate bound to an API Gateway on VMs.
---

# Inline certificate configuration entry reference

This topic provides reference information for the inline certificate
configuration entry. The inline certificate secures TLS for the Consul API gateway on VMs. In production environments, we recommend you use the more secure [file system certificate configuration entry](/consul/docs/reference/config-entry/file-system-certificate) instead.

The inline certificate configuration entry is not used for Consul on Kubernetes deployments. To learn about configuring certificates for Kubernetes environments, refer to [Gateway Resource Configuration](/consul/docs/reference/k8s/api-gateway/gateway).

## Configuration model

The following list outlines field hierarchy, language-specific data types, and
requirements in an `inline-certificate` configuration entry. Click on a property name
to view additional details, including default values.

- [`Kind`](#kind): string | must be `"inline-certificate"`
- [`Name`](#name): string | no default
- [`Namespace`](#namespace): string | no default <EnterpriseAlert inline />
- [`Partition`](#partition): string | no default <EnterpriseAlert inline />
- [`Meta`](#meta): map | no default
- [`Certificate`](#certificate): string | no default
- [`PrivateKey`](#privatekey): string | no default

## Complete configuration

When every field is defined, an `inline-certificate` configuration entry has the following form:

<Tabs>

<Tab heading="HCL" group="hcl">

```hcl
Kind = "inline-certificate"
Name = "<name of certificate>"

Meta = {
	"<any key>" = "<any value>"
}

Certificate = "<public certificate>"
PrivateKey = "<private key>"
```

</Tab>

<Tab heading="JSON" group="json">

```json
{
	"Kind": "inline-certificate",
	"Name": "<name of certificate>",
	"Meta": {
		"any key": "any value"
	},
	"Certificate": "<public certificate>",
	"PrivateKey": "<private key>"
}
```

</Tab>
</Tabs>

## Specification

### `Kind`

Specifies the type of configuration entry to implement.

#### Values

- Default: none
- This field is required.
- Data type: string that must equal `"inline-certificate"`

### `Name`

Specifies a name for the configuration entry. The name is metadata that you can
use to reference the configuration entry when performing Consul operations, such
as applying a configuration entry to a specific cluster.

#### Values

- Default: none
- This field is required.
- Data type: string

### `Namespace` <EnterpriseAlert inline />

Specifies the Enterprise [namespace](/consul/docs/multi-tenant/namespace) to apply to the configuration entry.

#### Values

- Default: `"default"` in Enterprise
- Data type: string

### `Partition` <EnterpriseAlert inline />

Specifies the Enterprise [admin partition](/consul/docs/multi-tenant/admin-partition) to apply to the configuration entry.

#### Values

- Default: `"default"` in Enterprise
- Data type: string

### `Meta`

Specifies an arbitrary set of key-value pairs to associate with the gateway.

#### Values

- Default: none
- Data type: map containing one or more keys and string values.

### `Certificate`

Specifies the inline public certificate to use for TLS.

#### Values

- Default: none
- This field is required.
- Data type: string value of the public certificate

### `PrivateKey`

Specifies the inline private key to use for TLS.

#### Values

- Default: none
- This field is required.
- Data type: string value of the private key

## Examples

The following example demonstrates an inline certificate configuration.

<Tabs>

<Tab heading="HCL" group="hcl">

```hcl
Kind                     = "inline-certificate"
Name                     = "tls-certificate"
Certificate              = "<complete-public-certificate>"
PrivateKey               = "<complete-private-key>"
```

</Tab>

<Tab heading="JSON" group="json">

```json
{
  "Kind": "inline-certificate",
  "Name": "tls-certificate",
	"Certificate": "<complete-public-certificate>",
	"PrivateKey": "<complete-private-key>"
}
```

</Tab>
</Tabs>