Certificate Management

Add Certificate

Adds or updates a certificate in the hdb_certificate system table. If a private_key is provided it will not be stored in hdb_certificate, it will be written to file in <ROOTPATH>/keys/. If a private_key is not passed the operation will search for one that matches the certificate. If one is not found an error will be returned.

Operation is restricted to super_user roles only

  • operation (required) - must always be add_certificate

  • name (required) - a unique name for the certificate

  • certificate (required) - a PEM formatted certificate string

  • is*authority *(required)_ - a boolean indicating if the certificate is a certificate authority

  • hosts (optional) - an array of hostnames that the certificate is valid for

  • private*key *(optional)_ - a PEM formatted private key string

Body

{
	"operation": "add_certificate",
	"name": "my-cert",
	"certificate": "-----BEGIN CERTIFICATE-----ZDFAay... -----END CERTIFICATE-----",
	"is_authority": false,
	"private_key": "-----BEGIN RSA PRIVATE KEY-----Y4dMpw5f... -----END RSA PRIVATE KEY-----"
}

Response: 200

{
	"message": "Successfully added certificate: my-cert"
}

Remove Certificate

Removes a certificate from the hdb_certificate system table and deletes the corresponding private key file.

Operation is restricted to super_user roles only

  • operation (required) - must always be remove_certificate

  • name (required) - the name of the certificate

Body

{
	"operation": "remove_certificate",
	"name": "my-cert"
}

Response: 200

{
	"message": "Successfully removed my-cert"
}

List Certificates

Lists all certificates in the hdb_certificate system table.

Operation is restricted to super_user roles only

  • operation (required) - must always be list_certificates

Body

{
	"operation": "list_certificates"
}

Response: 200

[
	{
		"name": "HarperDB-Certificate-Authority-node1",
		"certificate": "-----BEGIN CERTIFICATE-----\r\nTANBgkqhk... S34==\r\n-----END CERTIFICATE-----\r\n",
		"private_key_name": "privateKey.pem",
		"is_authority": true,
		"details": {
			"issuer": "CN=HarperDB-Certificate-Authority-node1 C=USA ST=Colorado L=Denver O=HarperDB\\, Inc.",
			"subject": "CN=HarperDB-Certificate-Authority-node1 C=USA ST=Colorado L=Denver O=HarperDB\\, Inc.",
			"serial_number": "5235345",
			"valid_from": "Aug 27 15:00:00 2024 GMT",
			"valid_to": "Aug 25 15:00:00 2034 GMT"
		},
		"is_self_signed": true,
		"uses": ["https", "wss"]
	},
	{
		"name": "node1",
		"certificate": "-----BEGIN CERTIFICATE-----\r\ngIEcSR1M... 5bv==\r\n-----END CERTIFICATE-----\r\n",
		"private_key_name": "privateKey.pem",
		"is_authority": false,
		"details": {
			"issuer": "CN=HarperDB-Certificate-Authority-node1 C=USA ST=Colorado L=Denver O=HarperDB\\, Inc.",
			"subject": "CN=node.1 C=USA ST=Colorado L=Denver O=HarperDB\\, Inc.",
			"subject_alt_name": "IP Address:127.0.0.1, DNS:localhost, IP Address:0:0:0:0:0:0:0:1, DNS:node.1",
			"serial_number": "5243646",
			"valid_from": "Aug 27 15:00:00 2024 GMT",
			"valid_to": "Aug 25 15:00:00 2034 GMT"
		},
		"is_self_signed": true,
		"uses": ["https", "wss"]
	}
]

Last updated