published on Wednesday, Apr 29, 2026 by Pulumiverse
published on Wednesday, Apr 29, 2026 by Pulumiverse
# acme.Registration
The acme.Registration resource can be used to create and manage accounts on an
ACME server. Once registered, the same private key that has been used for
registration can be used to request authorizations for certificates.
This resource is named
acme.Registrationfor historical reasons - in the ACME v1 spec, a registration referred to the account entity. This resource name is stable and there are no plans to change it.
Keep in mind that when using this resource along with
acme.Certificatewithin the same configuration, a change in the provider-levelserverUrl(example: from the Let’s Encrypt staging to production environment) within the same Terraform state will result in a resource failure, as Terraform will attempt to look for the account in the wrong CA. Consider different workspaces per environment, and/or using multiple provider instances.
Example
Basic Example
The following is the most basic example. In this case, the account private key is managed for you.
import * as pulumi from "@pulumi/pulumi";
import * as acme from "@pulumiverse/acme";
const reg = new acme.Registration("reg", {});
import pulumi
import pulumiverse_acme as acme
reg = acme.Registration("reg")
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumiverse/pulumi-acme/sdk/go/acme"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := acme.NewRegistration(ctx, "reg", nil)
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Acme = Pulumiverse.Acme;
return await Deployment.RunAsync(() =>
{
var reg = new Acme.Registration("reg");
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.acme.Registration;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var reg = new Registration("reg");
}
}
resources:
reg:
type: acme:Registration
Example coming soon!
Using a Pre-Existing Private Key
The following creates an account off of a private key generated with the
tlsPrivateKey resource.
import * as pulumi from "@pulumi/pulumi";
import * as acme from "@pulumiverse/acme";
import * as tls from "@pulumi/tls";
const privateKey = new tls.index.PrivateKey("private_key", {algorithm: "RSA"});
const reg = new acme.Registration("reg", {accountKeyPem: privateKey.privateKeyPem});
import pulumi
import pulumi_tls as tls
import pulumiverse_acme as acme
private_key = tls.index.PrivateKey("private_key", algorithm=RSA)
reg = acme.Registration("reg", account_key_pem=private_key["privateKeyPem"])
package main
import (
"github.com/pulumi/pulumi-tls/sdk/go/tls"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumiverse/pulumi-acme/sdk/go/acme"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
privateKey, err := tls.NewPrivateKey(ctx, "private_key", &tls.PrivateKeyArgs{
Algorithm: "RSA",
})
if err != nil {
return err
}
_, err = acme.NewRegistration(ctx, "reg", &acme.RegistrationArgs{
AccountKeyPem: privateKey.PrivateKeyPem,
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Acme = Pulumiverse.Acme;
using Tls = Pulumi.Tls;
return await Deployment.RunAsync(() =>
{
var privateKey = new Tls.Index.PrivateKey("private_key", new()
{
Algorithm = "RSA",
});
var reg = new Acme.Registration("reg", new()
{
AccountKeyPem = privateKey.PrivateKeyPem,
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.tls.PrivateKey;
import com.pulumi.tls.PrivateKeyArgs;
import com.pulumi.acme.Registration;
import com.pulumi.acme.RegistrationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var privateKey = new PrivateKey("privateKey", PrivateKeyArgs.builder()
.algorithm("RSA")
.build());
var reg = new Registration("reg", RegistrationArgs.builder()
.accountKeyPem(privateKey.privateKeyPem())
.build());
}
}
resources:
privateKey:
type: tls:PrivateKey
name: private_key
properties:
algorithm: RSA
reg:
type: acme:Registration
properties:
accountKeyPem: ${privateKey.privateKeyPem}
Example coming soon!
Argument Reference
NOTE: All arguments in
acme.Registrationforce a new resource if changed.
The resource takes the following arguments:
accountKeyPem(Optional) - The private key used to identify the account. If not provided, the key will be generated according to theaccountKeyAlgorithm,accountKeyEcdsaCurve, andaccountKeyRsaBitssettings.accountKeyAlgorithm(Optional) - The algorithm to use for the private key when generating from scratch. Supported settings:RSAandEDCSA. Default settings:ECDSA.accountKeyEcdsaCurve(Optional) - ECDSA curve to use for ECDSA key types. Supported settings:P256andP384. Default:P384.accountKeyRsaBits(Optional) - The key length to use for RSA key types. Supported settings:2048,3072, and4096. Default:4096.emailAddress(Optional) - The contact email address for the account.
Note that Let’s Encrypt no longer sends expiry emails, and only uses this field for possible email list onboarding (see https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended). As such, it is not recommended to set this field when using Let’s Encrypt. Other CAs may or may not require this field - consult the documentation of the CA you are using in this case.
externalAccountBinding(Optional) - An external account binding for the registration, usually used to link the registration with an account in a commercial CA. Sub-options are:keyId(Required): The key ID for the external account binding.hmacBase64(Required): The base64-encoded message authentication code for the external account binding.
Attribute Reference
The following attributes are exported:
id: The original full URL of the account.accountKeyPem: The private key used to identify the account (will be generated if not provided).registrationUrl: The current full URL of the account.
idandregistrationUrlwill usually be the same and will usually only diverge when migrating protocols, ie: ACME v1 to v2.
Create Registration Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new Registration(name: string, args?: RegistrationArgs, opts?: CustomResourceOptions);@overload
def Registration(resource_name: str,
args: Optional[RegistrationArgs] = None,
opts: Optional[ResourceOptions] = None)
@overload
def Registration(resource_name: str,
opts: Optional[ResourceOptions] = None,
account_key_algorithm: Optional[str] = None,
account_key_ecdsa_curve: Optional[str] = None,
account_key_pem: Optional[str] = None,
account_key_rsa_bits: Optional[int] = None,
email_address: Optional[str] = None,
external_account_binding: Optional[RegistrationExternalAccountBindingArgs] = None)func NewRegistration(ctx *Context, name string, args *RegistrationArgs, opts ...ResourceOption) (*Registration, error)public Registration(string name, RegistrationArgs? args = null, CustomResourceOptions? opts = null)
public Registration(String name, RegistrationArgs args)
public Registration(String name, RegistrationArgs args, CustomResourceOptions options)
type: acme:Registration
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
resource "acme_registration" "name" {
# resource properties
}Parameters
- name string
- The unique name of the resource.
- args RegistrationArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args RegistrationArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args RegistrationArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args RegistrationArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args RegistrationArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var registrationResource = new Acme.Registration("registrationResource", new()
{
AccountKeyAlgorithm = "string",
AccountKeyEcdsaCurve = "string",
AccountKeyPem = "string",
AccountKeyRsaBits = 0,
EmailAddress = "string",
ExternalAccountBinding = new Acme.Inputs.RegistrationExternalAccountBindingArgs
{
HmacBase64 = "string",
KeyId = "string",
},
});
example, err := acme.NewRegistration(ctx, "registrationResource", &acme.RegistrationArgs{
AccountKeyAlgorithm: pulumi.String("string"),
AccountKeyEcdsaCurve: pulumi.String("string"),
AccountKeyPem: pulumi.String("string"),
AccountKeyRsaBits: pulumi.Int(0),
EmailAddress: pulumi.String("string"),
ExternalAccountBinding: &acme.RegistrationExternalAccountBindingArgs{
HmacBase64: pulumi.String("string"),
KeyId: pulumi.String("string"),
},
})
resource "acme_registration" "registrationResource" {
account_key_algorithm = "string"
account_key_ecdsa_curve = "string"
account_key_pem = "string"
account_key_rsa_bits = 0
email_address = "string"
external_account_binding = {
hmac_base64 = "string"
key_id = "string"
}
}
var registrationResource = new Registration("registrationResource", RegistrationArgs.builder()
.accountKeyAlgorithm("string")
.accountKeyEcdsaCurve("string")
.accountKeyPem("string")
.accountKeyRsaBits(0)
.emailAddress("string")
.externalAccountBinding(RegistrationExternalAccountBindingArgs.builder()
.hmacBase64("string")
.keyId("string")
.build())
.build());
registration_resource = acme.Registration("registrationResource",
account_key_algorithm="string",
account_key_ecdsa_curve="string",
account_key_pem="string",
account_key_rsa_bits=0,
email_address="string",
external_account_binding={
"hmac_base64": "string",
"key_id": "string",
})
const registrationResource = new acme.Registration("registrationResource", {
accountKeyAlgorithm: "string",
accountKeyEcdsaCurve: "string",
accountKeyPem: "string",
accountKeyRsaBits: 0,
emailAddress: "string",
externalAccountBinding: {
hmacBase64: "string",
keyId: "string",
},
});
type: acme:Registration
properties:
accountKeyAlgorithm: string
accountKeyEcdsaCurve: string
accountKeyPem: string
accountKeyRsaBits: 0
emailAddress: string
externalAccountBinding:
hmacBase64: string
keyId: string
Registration Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The Registration resource accepts the following input properties:
- account_
key_ stringalgorithm - account_
key_ stringecdsa_ curve - account_
key_ stringpem - account_
key_ numberrsa_ bits - email_
address string - external_
account_ objectbinding
- account
Key StringAlgorithm - account
Key StringEcdsa Curve - account
Key StringPem - account
Key IntegerRsa Bits - email
Address String - external
Account RegistrationBinding External Account Binding
- account
Key stringAlgorithm - account
Key stringEcdsa Curve - account
Key stringPem - account
Key numberRsa Bits - email
Address string - external
Account RegistrationBinding External Account Binding
- account
Key StringAlgorithm - account
Key StringEcdsa Curve - account
Key StringPem - account
Key NumberRsa Bits - email
Address String - external
Account Property MapBinding
Outputs
All input properties are implicitly available as output properties. Additionally, the Registration resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Registration
Url string
- Id string
- The provider-assigned unique ID for this managed resource.
- Registration
Url string
- id string
- The provider-assigned unique ID for this managed resource.
- registration_
url string
- id String
- The provider-assigned unique ID for this managed resource.
- registration
Url String
- id string
- The provider-assigned unique ID for this managed resource.
- registration
Url string
- id str
- The provider-assigned unique ID for this managed resource.
- registration_
url str
- id String
- The provider-assigned unique ID for this managed resource.
- registration
Url String
Look up Existing Registration Resource
Get an existing Registration resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: RegistrationState, opts?: CustomResourceOptions): Registration@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
account_key_algorithm: Optional[str] = None,
account_key_ecdsa_curve: Optional[str] = None,
account_key_pem: Optional[str] = None,
account_key_rsa_bits: Optional[int] = None,
email_address: Optional[str] = None,
external_account_binding: Optional[RegistrationExternalAccountBindingArgs] = None,
registration_url: Optional[str] = None) -> Registrationfunc GetRegistration(ctx *Context, name string, id IDInput, state *RegistrationState, opts ...ResourceOption) (*Registration, error)public static Registration Get(string name, Input<string> id, RegistrationState? state, CustomResourceOptions? opts = null)public static Registration get(String name, Output<String> id, RegistrationState state, CustomResourceOptions options)resources: _: type: acme:Registration get: id: ${id}import {
to = acme_registration.example
id = "${id}"
}
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Account
Key stringAlgorithm - Account
Key stringEcdsa Curve - Account
Key stringPem - Account
Key intRsa Bits - Email
Address string - External
Account RegistrationBinding External Account Binding Args - Registration
Url string
- account_
key_ stringalgorithm - account_
key_ stringecdsa_ curve - account_
key_ stringpem - account_
key_ numberrsa_ bits - email_
address string - external_
account_ objectbinding - registration_
url string
- account
Key StringAlgorithm - account
Key StringEcdsa Curve - account
Key StringPem - account
Key IntegerRsa Bits - email
Address String - external
Account RegistrationBinding External Account Binding - registration
Url String
- account
Key stringAlgorithm - account
Key stringEcdsa Curve - account
Key stringPem - account
Key numberRsa Bits - email
Address string - external
Account RegistrationBinding External Account Binding - registration
Url string
- account
Key StringAlgorithm - account
Key StringEcdsa Curve - account
Key StringPem - account
Key NumberRsa Bits - email
Address String - external
Account Property MapBinding - registration
Url String
Supporting Types
RegistrationExternalAccountBinding, RegistrationExternalAccountBindingArgs
- Hmac
Base64 string - Key
Id string
- Hmac
Base64 string - Key
Id string
- hmac_
base64 string - key_
id string
- hmac
Base64 String - key
Id String
- hmac
Base64 string - key
Id string
- hmac_
base64 str - key_
id str
- hmac
Base64 String - key
Id String
Package Details
- Repository
- acme pulumiverse/pulumi-acme
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
acmeTerraform Provider.
published on Wednesday, Apr 29, 2026 by Pulumiverse
