Certificate variables

In the variable-editor, selecting Certificate as the variable type allows you to create a variable with a certificate managed by Octopus as the value.

Selecting Certificate as the variable type in the variable editor

Certificate variables can be scoped, similar to regular text variables.

A certificate variable scoped to an environment

Expanded properties

At deploy-time, certificate variables are expanded. For example, a variable MyCertificate becomes:

VariableDescriptionExample value
MyCertificateThe certificate IDCertificates-1
MyCertificate.TypeThe variable typeCertificate
MyCertificate.NameThe user-provided nameMy Development Certificate
MyCertificate.ThumbprintThumbprintA163E39F59560E6FE33A0299D19124B242D9B37E
MyCertificate.RawOriginalThe base64 encoded original file, exactly as it was uploaded.
MyCertificate.PasswordThe password specified when the file was uploaded.
MyCertificate.PfxThe base64 encoded certificate in PKCS#12 format, including the private-key if present. If the originally uploaded certificate was password-protected (i.e. MyCertificate.Password is not empty), then this value will also be a password-protected PFX (PKCS#12) format.
MyCertificate.CertificateThe base64 encoded DER ASN.1 certificate.
MyCertificate.PrivateKeyThe base64 encoded DER ASN.1 private key. This will be stored and transmitted as a sensitive variable.
MyCertificate.CertificatePemThe PEM representation of the certificate (i.e. the PublicKey with header/footer).
MyCertificate.PrivateKeyPemThe PEM representation of the private key (i.e. the PrivateKey with header/footer).
MyCertificate.ChainPemThe PEM representation of any chain certificates (intermediate or certificate-authority). This variable does not include the primary certificate.
MyCertificate.SubjectThe X.500 distinguished name of the subject
MyCertificate.SubjectCommonNameThe un-attributed subject common name
MyCertificate.IssuerThe X.500 distinguished name of the issuer
MyCertificate.NotBeforeNotBefore date2016-06-15T13:45<30>.0000000-07<00>
MyCertificate.NotAfterNotAfter date2019-06-15T13:45<30>.0000000-07<00>

Example usage

Given the certificate variable MyCertificate, you can access the certificate thumbprint in a script like this:

PowerShell
PowerShell
Write-Host $OctopusParameters["MyCertificate.Thumbprint"]
Bash
Bash
thumbprint=$(get_octopusvariable "MyCertificate.Thumbprint")
echo "$thumbprint"

It’s possible to write the PEM representation of the certificate to a file for use directly with a web server e.g. Apache, or a reverse proxy like NGINX. In bash, the script looks like this:

Bash
CERT=$(get_octopusvariable "MyCertificate.CertificatePem")
echo "$CERT" > my_cert.crt

If your certificate also contains any chain certificates (e.g. intermediate or certificate authority), they can be written to a file that contains the primary certificate too. The following example shows how to do so in bash:

Bash
CERT=$(get_octopusvariable "MyCertificate.CertificatePem")
CHAIN=$(get_octopusvariable "MyCertificate.ChainPem")
COMBINED_CHAIN="$CERT\n$CHAIN"
echo -e "$COMBINED_CHAIN" > my_combined.crt

If your certificate also has a private key that you need to export, you can use the PrivateKeyPem property using bash:

Bash
KEY=$(get_octopusvariable "MyCertificate.PrivateKeyPem")
echo "$KEY" > ssl.key

Learn more

Help us continuously improve

Please let us know if you have any feedback about this page.

Send feedback

Use Octopus docs with AI