# Certificates - Terraform Resources

import DocButton from '~/components/webkit/DocButton.vue';

<DocButton href="https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/digital_certificate" label="View in Terraform Registry" kind="secondary" size="medium" />

Manage SSL/TLS digital certificates to protect your applications with HTTPS.

---

The certificates resources allow you to manage digital certificates for your applications.

### Available Resources

| Resource | Description |
|---------|-------------|
| [`azion_digital_certificate`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/digital_certificate) | Digital certificates |

### Available Data Sources

| Data Source | Description |
|--------------|-------------|
| [`azion_digital_certificates`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/digital_certificates) | Query existing certificates |

---

## azion_digital_certificate

### Basic Example

```hcl
resource "azion_digital_certificate" "example" {
  name = "my-certificate"
  
  # Certificate and private key
  certificate = file("${path.module}/cert.pem")
  private_key = file("${path.module}/key.pem")
}
```

### Main Arguments

| Argument | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Certificate name |
| `certificate` | string | Yes | SSL/TLS certificate in PEM format |
| `private_key` | string | Yes | Private key in PEM format |

For the complete list of arguments, see the [Terraform Registry](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/digital_certificate).

### Exported Attributes

| Attribute | Type | Description |
|----------|------|-------------|
| `id` | string | Unique certificate ID |

---

## Complete Example

```hcl
terraform {
  required_providers {
    azion = {
      source  = "aziontech/azion"
      version = "2.0.0"
    }
  }
}

provider "azion" {
  api_token = var.api_token
}

# Create digital certificate
resource "azion_digital_certificate" "my_cert" {
  name        = "certificate-mydomain"
  certificate = file("${path.module}/certificates/mydomain.pem")
  private_key = file("${path.module}/certificates/mydomain-key.pem")
}

# Query existing certificates
data "azion_digital_certificates" "all" {}

output "certificate_id" {
  value = azion_digital_certificate.my_cert.id
}
```

---

## Using Variables for Certificates

To avoid exposing certificates in code, use variables:

```hcl
variable "ssl_certificate" {
  type        = string
  description = "SSL certificate in PEM format"
  sensitive   = true
}

variable "ssl_private_key" {
  type        = string
  description = "SSL private key in PEM format"
  sensitive   = true
}

resource "azion_digital_certificate" "my_cert" {
  name        = "my-certificate"
  certificate = var.ssl_certificate
  private_key = var.ssl_private_key
}
```

---

## Related Resources

- [DNS](/en/documentation/products/terraform-provider/resources/dns/) - Manage DNS zones
- [Security](/en/documentation/products/terraform-provider/resources/security/) - Manage firewall and WAF
- [Applications](/en/documentation/products/terraform-provider/resources/applications/) - Manage your applications
- [Migration Guide](/en/documentation/products/terraform-provider/terraform-migration-v3-to-v4/) - Migrate from v1.x to v2.0